Допустим, у меня есть таблица
VAL PERSON
1 1
2 1
3 1
4 1
2 2
4 2
6 2
3 3
6 3
9 3
12 3
15 3
И я хотел бы рассчитать квартили для каждого человека.
Я понимаю, что могу легко рассчитать их для одного человека следующим образом:
SELECT
VAL,
NTILE(4) OVER(ORDER BY VAL) AS QUARTILE
WHERE PERSON = 1;
Даст мне желаемые результаты:
VAL QUARTILE
1 1
2 2
3 3
4 4
Проблема в том, что я 'Я хотел бы сделать это для каждого человека.Я знаю, что-то вроде этого сделало бы эту работу:
SELECT
PERSON,
VAL,
NTILE(4) OVER(ORDER BY VAL) AS QUARTILE
WHERE PERSON = 1
UNION
SELECT
PERSON,
VAL,
NTILE(4) OVER(ORDER BY VAL) AS QUARTILE
WHERE PERSON = 2
UNION
SELECT
PERSON,
VAL,
NTILE(4) OVER(ORDER BY VAL) AS QUARTILE
WHERE PERSON = 3
UNION
SELECT
PERSON,
VAL,
NTILE(4) OVER(ORDER BY VAL) AS QUARTILE
WHERE PERSON = 4
Но что, если на столе появился новый человек?Тогда мне придется изменить код SQL.Есть предложения?