gpt4 book ai didi

SQL ORDER BY GROUP BY

转载 作者:行者123 更新时间:2023-12-04 05:07:20 25 4
gpt4 key购买 nike

我有 2 个按 id 链接的表(ENTRIES 和 USERS),我只想从前 5 个用户中选择所有条目,然后按单个用户条目的 COUNT 对它们进行排序。

USERS    ENTRIES

tom entry1
mary entry2
jane entry3
tom entry4
tom entry5

等等……
显示为
USERS    ENTRIES

tom entry1
tom entry4
tom entry5
jane entry3
mary entry2

我的代码目前只是按名称排序,但没有按 COUNT 个条目列出
SELECT  ENTRIES.entry, USERS.NAME   FROM ENTRIES, USERS 
WHERE ENTRIES.USER_ID = USERS.ID
ORDER BY USERS.NAME

最佳答案

由于您使用的是 Oracle,您可以使用窗口函数来获取每个用户的总数:

SELECT e.entry, 
u.NAME,
count(*) over(partition by u.name) Total
FROM ENTRIES e
INNER JOIN USERS u
ON e.USER_ID = u.ID
ORDER BY total desc, u.NAME

SQL Fiddle with Demo .

如果您只想返回前 5 行,则可以使用:
select entry,
name,
total
from
(
SELECT e.entry,
u.NAME,
count(*) over(partition by u.name) Total,
rownum rn
FROM ENTRIES e
INNER JOIN USERS u
ON e.USER_ID = u.ID
)
where rn <= 5
ORDER BY total desc, NAME

SQL Fiddle with Demo

关于SQL ORDER BY GROUP BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15369723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com