Funktioner för datamanipulering i SQL Server
Ana Voicu
Data Engineer
FIRST_VALUE(numeric_expression)
OVER ([PARTITION BY column] ORDER BY column ROW_or_RANGE frame)
Komponenter i OVER-satsen
| Komponent | Status | Beskrivning |
|---|---|---|
| PARTITION by column | valfri | delar upp resultatet i partitioner |
| ORDER BY column | obligatorisk | sorterar resultatet |
| ROW_or_RANGE frame | valfri | anger partitionsgränserna |
LAST_VALUE(numeric_expression)
OVER ([PARTITION BY column] ORDER BY column ROW_or_RANGE frame)
RANGE BETWEEN start_boundary AND end_boundary
ROWS BETWEEN start_boundary AND end_boundary
| Gräns | Beskrivning |
|---|---|
| UNBOUNDED PRECEDING | första raden i partitionen |
| UNBOUNDED FOLLOWING | sista raden i partitionen |
| CURRENT ROW | aktuell rad |
| PRECEDING | föregående rad |
| FOLLOWING | nästa rad |
SELECT
first_name + ' ' + last_name AS name,
gender,
total_votes AS votes,
FIRST_VALUE(total_votes)
OVER (PARTITION BY gender ORDER BY total_votes) AS min_votes,
LAST_VALUE(total_votes)
OVER (PARTITION BY gender ORDER BY total_votes
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS max_votes
FROM voters;
| name | gender | votes | min_votes | max_votes |
|-----------------|--------|-------|-----------|-----------|
| Michele Suarez | F | 20 | 20 | 189 |
| ... | ... | ... | 20 | 189 |
| Marcus Jenkins | M | 16 | 16 | 182 |
| Micheal Vazquez | M | 18 | 16 | 182 |
LAG(numeric_expression)
OVER ([PARTITION BY column] ORDER BY column)
LEAD(numeric_expression)
OVER ([PARTITION BY column] ORDER BY column)
SELECT
broad_bean_origin AS bean_origin,
rating,
cocoa_percent,
LAG(cocoa_percent) OVER(ORDER BY rating ) AS percent_lower_rating,
LEAD(cocoa_percent) OVER(ORDER BY rating ) AS percent_higher_rating
FROM ratings
WHERE company = 'Felchlin'
ORDER BY rating ASC;
| bean_origin | rating | cocoa_percent | percent_lower_rating | percent_higher_rating |
|--------------------|--------|---------------|----------------------|-----------------------|
| Grenada | 3 | 0.58 | NULL | 0.62 |
| Dominican Republic | 3.75 | 0.62 | 0.58 | 0.64 |
| Madagascar | 3.75 | 0.64 | 0.74 | 0.65 |
| Venezuela | 4 | 0.65 | 0.74 | NULL |
Funktioner för datamanipulering i SQL Server