在 postgresql 表中查找最大条目,sql

Posted

技术标签:

【中文标题】在 postgresql 表中查找最大条目,sql【英文标题】:Finding max entries in postgresql table, sql 【发布时间】:2019-09-20 15:03:48 【问题描述】:

我有一个包含数百万条目的表。我想知道一年(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】:

将时间截断到分钟,按分钟分组,然后计数:

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

【讨论】:

这似乎有效!我唯一添加的是给定年份 WHERE date_part('year', create_time) = 2018 的限制。我确认我找到的 2018 年数字是正确的 :-) 非常感谢!

以上是关于在 postgresql 表中查找最大条目,sql的主要内容,如果未能解决你的问题,请参考以下文章

sql 在wp_options和wp_post_meta表中查找大型条目

sql 在wp_options和wp_post_meta表中查找大型条目

Access SQL 查询:查找表中每个不同条目的日期最近的行

在 PostgreSQL 表中查找序列的间隙

SQL:获取最近的最大条目

如何查找一段时间内的 SQL 数据库条目