В зависимости от вашего вида SQL, вы можете получить квартили, используя более общую аналитическую функцию ntile
. Это в основном добавляет новый столбец к вашему запросу.
SELECT MIN(customer_age) as min_age FROM (
SELECT customer_id, customer_age, ntile(4) OVER(ORDER BY customer_age) AS q4 FROM table1
WHERE customer_id IN (
SELECT customer_id FROM table2 WHERE purchase_date = 2016)
) q
WHERE q4=4
Возвращает наименьший возраст клиентов 4-го квартиля, который можно использовать в подзапросе для клиентов, совершивших покупки в 2017 году.
Аргумент к ntile
- это количество сегментов, на которые вы хотите разделить. В этом случае 75% + равняется 4-му квартилю, поэтому 4 ведра в порядке. Предложение OVER()
указывает, что вы хотите отсортировать (в нашем случае customer_age), а также позволяет нам разбивать (группировать) данные, если мы хотим, скажем, создать несколько рейтингов для разных лет или стран.