Fungsi untuk Memanipulasi Data di SQL Server
Ana Voicu
Data Engineer
FIRST_VALUE(numeric_expression)
OVER ([PARTITION BY column] ORDER BY column ROW_or_RANGE frame)
Komponen klausa OVER
| Komponen | Status | Deskripsi |
|---|---|---|
| PARTITION BY column | opsional | membagi hasil ke dalam partisi |
| ORDER BY column | wajib | mengurutkan hasil |
| ROW_or_RANGE frame | opsional | menetapkan batas partisi |
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
| Batas | Deskripsi |
|---|---|
| UNBOUNDED PRECEDING | baris pertama dalam partisi |
| UNBOUNDED FOLLOWING | baris terakhir dalam partisi |
| CURRENT ROW | baris saat ini |
| PRECEDING | baris sebelumnya |
| FOLLOWING | baris berikutnya |
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 |
Fungsi untuk Memanipulasi Data di SQL Server