我有一个充满媒体的数据库。为简单起见,我们说它有
Table: media
id
college_id
title
shares
我正在尝试从每所大学获得最多份额的文章。因此,从本质上讲,获得康奈尔大学,南加州大学,锡拉丘兹分校的顶级共享文章。
我一直在使用这个SQL命令,但它没有返回每个大学的最多共享文章。
SELECT *
FROM media
GROUP BY college_id
ORDER BY shares DESC
有人有什么想法吗?
shares列是一个整数,表示共享的数量。
答案 0 :(得分:4)
SELECT top 1 * from media group by college_id order by shares desc
这是我的第一个想法......虽然我想知道我是否遗漏了一些东西,因为这个答案比亚当的简单得多。如果共享是共享的次数,虽然这听起来像你正在寻找的那样。
编辑:我现在看到了。这是另一种方式......
select m1.id, m1.college_id, m1.title, m1.shares
from media m1 join
(
select college_id, max(shares) max_shares
from media
group by college_id
) m2 on m1.college_id = m2.college_id and m1.shares = m2.max_shares
如果存在平局,每个大学将返回多篇文章。如果你想要,我不会。
答案 1 :(得分:0)
如果我们假设share列处理共享计数查询,
SELECT title,
Max(shares) AS max
FROM media
GROUP BY college_id
ORDER BY max DESC
但是如果我们假设shares列是ID或sth,则查询将是
SELECT title,
COUNT(shares) AS COUNT
FROM media
GROUP BY college_id
ORDER BY COUNT DESC
我建议你下次提供更多细节。
答案 2 :(得分:0)
您正在寻找MAX sql关键字
在MSSQL中,这很好用
SELECT college_id,
Max(shares)
FROM media
GROUP BY college_id