Рассмотрим таблицу postgresql с N числом столбцов. Один столбец содержит биномиальную классификацию [0 1]
. Я хочу сгруппировать данные по этому полю, следуя следующему синтаксису (я использую psycopg2 для python и pg для nodejs):
SELECT dummy_field,
COUNT(*)
FROM __table__
WHERE q_id = '2F5543E89823'
GROUP BY dummy_field
Этот запрос возвращает, например: [(0, 1606), (1, 6674)]
значения. Я изменил приведенный выше синтаксис, чтобы включить только последние два дня на основе CURRENT_TIMESTAMP
:
Это было бы:
...
AND date_field > CURRENT_TIMESTAMP - INTERVAL '2 days'
GROUP BY dummy_field
Однако я хочу получить в другом запросе только последние 1000 записей на основе ORDER BY date_field DESC LIMIT 1000
. Поскольку поля выбора не включают date_field
, я получаю эту ошибку:
столбец « поле .date_field» должен появляться в предложении GROUP BY или использоваться в статистической функции
Чтобы избежать этой ошибки, я использовал следующий синтаксис:
SELECT dummy_field, date_field,
COUNT(*)
FROM __table__
WHERE q_id = '2F5543E89823'
GROUP BY dummy_field, date_field
ORDER BY date_field DESC LIMIT 1000
Однако это не то, что я хочу. Я хочу использовать COUNT (*) и GROUP BY dummy_field, учитывая только последние 1000 записей, когда поле date_field отсортировано по способу DESC.
Есть ли другая альтернатива, чтобы приблизиться к этому результату? Заранее спасибо.