选择一列的最大值,按另一列分组不起作用

时间:2011-11-15 02:12:32

标签: php mysql sql cakephp group-by

我有一个充满媒体的数据库。为简单起见,我们说它有

Table: media

id
college_id
title
shares

我正在尝试从每所大学获得最多份额的文章。因此,从本质上讲,获得康奈尔大学,南加州大学,锡拉丘兹分校的顶级共享文章。

我一直在使用这个SQL命令,但它没有返回每个大学的最多共享文章。

SELECT *
FROM media
GROUP BY college_id
ORDER BY shares DESC

有人有什么想法吗?

shares列是一个整数,表示共享的数量。

3 个答案:

答案 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