Нахождение максимального количества записей в таблице postgresql, sql - PullRequest
1 голос
/ 02 мая 2019

У меня есть таблица с несколькими миллионами записей.Я хочу узнать, когда максимальное количество записей, которые происходят в течение данной минуты в течение года (2018).

Моя первоначальная стратегия состояла в том, чтобы выяснить, в каком месяце было наибольшее количество записей.Например:

- Месяц

SELECT date_part('month', create_time), count(*) 
FROM mydb.mytable
WHERE date_part('year', create_time) = 2018
GROUP BY date_part('month', create_time)

Это даст мне максимальный месяц в течение года.Я бы продолжил с днем, часом месяца и в конечном итоге получил бы, например:

- Минута

SELECT date_part('minute', create_time), count(*) 
FROM mydb.mytable
WHERE date_part('year', create_time) = 2018
AND date_part('month', create_time) = 6
AND date_part('day', create_time) = 19
AND date_part('hour', create_time) = 11
GROUP BY date_part('minute', create_time)
ORDER BY count DESC

При этой стратегии я обнаружил, что максимальное количество записей в минуту будет, например,250.

Однако это оказалось неверной стратегией.

По стечению обстоятельств я обнаружил, что один из месяцев, в котором было значительно меньше записей в месяц, на самом деле имел более высокую скорость входа в минутунапример, 700.

Итак, вопрос в том, как мне найти максимальное количество записей в минуту в течение года, не прибегая к "поиску" моего пути?

1 Ответ

3 голосов
/ 02 мая 2019

Обрезать время до минуты, сгруппировать по ним и посчитать:

SELECT
    date_trunc('minute', create_time),
    count(*)
FROM mydb.mytable
GROUP BY 1
ORDER BY 2 DESC
...