mirror of
https://github.com/hanzo-ds/sqlparser.git
synced 2026-10-30 20:53:50 +00:00
33 lines
1.3 KiB
SQL
33 lines
1.3 KiB
SQL
-- Origin SQL:
|
|
WITH
|
|
monthly AS (
|
|
SELECT toStartOfMonth(date) AS month,
|
|
department,
|
|
avg(salary) AS avg_salary
|
|
FROM salary_table
|
|
WHERE year = 2023
|
|
GROUP BY month, department
|
|
),
|
|
ranked AS (
|
|
SELECT month,
|
|
department,
|
|
avg_salary,
|
|
row_number() OVER (PARTITION BY department ORDER BY avg_salary DESC) AS dept_rank
|
|
FROM monthly
|
|
)
|
|
SELECT month,
|
|
department,
|
|
avg_salary,
|
|
lag(avg_salary, 1, 0) OVER (
|
|
PARTITION BY department
|
|
ORDER BY month
|
|
ROWS BETWEEN 1 PRECEDING AND CURRENT ROW
|
|
) AS prev_month_avg
|
|
FROM ranked
|
|
WHERE dept_rank <= 5
|
|
ORDER BY month, department;
|
|
|
|
|
|
-- Format SQL:
|
|
WITH monthly AS (SELECT toStartOfMonth(date) AS month, department, avg(salary) AS avg_salary FROM salary_table WHERE year = 2023 GROUP BY month, department), ranked AS (SELECT month, department, avg_salary, row_number() OVER (PARTITION BY department ORDER BY avg_salary DESC) AS dept_rank FROM monthly) SELECT month, department, avg_salary, lag(avg_salary, 1, 0) OVER (PARTITION BY department ORDER BY month ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_month_avg FROM ranked WHERE dept_rank <= 5 ORDER BY month, department;
|