sql如何从每个用户的连接计数中获得前5名
这是我到目前为止的SQL代码:sql如何从每个用户的连接计数中获得前5名,sql,Sql,这是我到目前为止的SQL代码: SELECT COUNT(*) OVER(), users.* FROM items LEFT JOIN users ON items.user_id = users.id ORDER BY COUNT LIMIT 5 我有两张桌子。用户和项目。用户可以有许多项。我试图找到哪个用户拥有最多的项目,并返回前几个 谢谢大家! 我试图找到哪个用户拥有最多的项目,并返回前几项[大概是项目] 您可以使用窗口功能为用户返回最多的所有项目: select i.* from (
SELECT COUNT(*) OVER(), users.*
FROM items
LEFT JOIN users
ON items.user_id = users.id
ORDER BY COUNT
LIMIT 5
我有两张桌子。用户和项目。用户可以有许多项。我试图找到哪个用户拥有最多的项目,并返回前几个
谢谢大家!
我试图找到哪个用户拥有最多的项目,并返回前几项[大概是项目]
您可以使用窗口功能为用户返回最多的所有项目:
select i.*
from (select i.*, max(cnt) over () as max_cnt
from (select i.*,
count(*) over (partition by user_id) as cnt
from items i
) i
) i
where cnt = max_cnt;
您可以使用以下选项,使用子选择来获取每个用户的项目数:
SELECT u.*, (SELECT COUNT(*) FROM items WHERE items.user_id = u.user_id) AS cnt
FROM users u
ORDER BY cnt DESC
LIMIT 5
您可以通过子查询执行此操作:
select *
from (SELECT COUNT(i.user_id) cnt
, u.*
FROM users u
LEFT JOIN Items i
ON u.id = i.user_id
group by id, name) A
order by cnt desc
LIMIT 5
注:
不要忘记将DESC放在您的order by子句中,因为:
如何从每个用户的加入计数中获得前5名
说明:
字母A只是子查询的别名。你想叫什么名字都行
演示:
样本数据、期望的结果和适当的数据库标记都会有所帮助。你的标题和你的问题不一样。嗨@Syn,在你向别人寻求帮助后,给出反馈将是一件非常好和正确的事情。以下是如何: