如何在SQLite中最大化(COUNT(x))

Rud*_*die 5 sql sqlite group-by count

我有一个SQLite表blog_posts。每个博客帖子都有一个idblog_id

如果我想知道每个博客有多少博客文章:

SELECT blog_id, count(1) posts FROM blog_posts group by blog_id
Run Code Online (Sandbox Code Playgroud)

如果我想知道博客中帖子数最多的帖子有多少,该怎么办?(我不需要blog_id。)显然这是非法的:

SELECT max(count(1)) posts FROM blog_posts group by blog_id
Run Code Online (Sandbox Code Playgroud)

我很确定我错过了一些东西,但是我看不到...

Mat*_*ick 5

您可以使用子查询。这是你如何做到的:

  1. 获取每个博客的帖子数
  2. 选择最大帖子数

例子:

select max(num_posts) as max_posts
from (
  select blog_id, count(*) as num_posts 
  from blog_posts 
  group by blog_id
) a
Run Code Online (Sandbox Code Playgroud)

(子查询在 中(...))。

注意:我不是 SQLite 高级用户,所以我不知道这是否有效,但SQLite 文档表明支持子查询。


Mos*_*cho 5

其他解决方案:

select count(*) as Result from blog_posts
group by blog_id
order by Result desc
limit 1
Run Code Online (Sandbox Code Playgroud)

我不确定哪个解决方案会运行得更快,如果是这个解决方案还是带有子查询的解决方案。