MySQL NTILE Bucket Select - PullRequest
       2

MySQL NTILE Bucket Select

0 голосов
/ 10 апреля 2020

Я создал столбец процентиля с 10 сегментами, используя:

SELECT *, NTILE(10) OVER(ORDER BY returns) AS 'percentile' FROM db.table1;

Я хочу выделить один сегмент, как SELECT * FROM db.table1 WHERE percentile = 10, но я получаю столбец "процентиля", которого не существует.

Есть ли способ использовать NTILE, а затем выбрать только один сегмент одновременно? (Новое до mysql)

1 Ответ

2 голосов
/ 10 апреля 2020

Вам нужен подзапрос:

SELECT t1.*
FROM (SELECT *, NTILE(10) OVER (ORDER BY returns) AS percentile
      FROM db.table1
     ) t1
WHERE percentile = 1;

Это верно для любого псевдонима, определенного в предложении FROM.

Вы также можете использовать расширение MySQL для HAVING пункт:

SELECT *, NTILE(10) OVER (ORDER BY returns) AS percentile
FROM db.table1
HAVING percentile = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...