在PostgreSQL表,SQL中查找最大条目

时间:2019-05-02 06:11:21

标签: sql postgresql groupwise-maximum

我有一个包含数百万个条目的表。我想找出一年(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 个答案:

答案 0 :(得分:3)

将时间截断为分钟,按该时间分组并计数:

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