У меня есть запрос Redshift и Netezza, где COUNT(*)
увеличивается, когда я его запускаю, так как большинство таблиц добавляют строки с большим количеством продаж и т. Д. В любом случае, я ищу верхние 20% по цене, поэтому яиспользуя ORDER BY price
, затем изменяя лимит, выполняя ментальную математику, чтобы получить верхние 20%, т.е. если COUNT(*)=10,000
, тогда я добавлю статический LIMIT 2000
.Завтра, может быть, это будет 12 000 строк, тогда мне нужно будет запустить COUNT(*)
и снова изменить LIMIT 2400
.Это явно не масштабируемо.
Я пытаюсь отредактировать запрос, чтобы включить динамический лимит, ищу верхние 20% и легко меняюсь между процентами: 5%, 10% и т. Д. Так что неважноколичество строк, я получаю последовательные результаты.
Пример запроса ниже:
SELECT
*
FROM orders
WHERE
sale_date >= '2018-01-01'
ORDER BY
price DESC
LIMIT 2000
Я хотел бы иметь что-то, что больше похоже на:
SELECT
*
FROM orders
WHERE
sale_date >= '2018-01-01'
ORDER BY
price DESC
LIMIT (SELECT COUNT(*) * 0.2 FROM orders)
Неуверен, что Redshift / Netezza поддерживает эту функцию.Я видел ОДИН вопрос StackOverflow, где это было возможно в MySQL, используя переменную функцию, но я работаю в Redshift и Netezza.У кого-нибудь есть идеи как это создать?Спасибо!