MySQL - 按整体计数的降序对结果进行排序

时间:2011-02-17 05:18:54

标签: mysql select

我有一张表格如下

年-------- org ------- name ---------- category -------- points
2005 -------- ABC ------- N1 ---------- CAT1 -------- 10
2006 -------- DEF ------- N2 ---------- CAT2 -------- 5
等等

此表中的主键是(年,组织,名称)

我需要一个输出如下

org ------- category ------ points (按组织总点数的降序排序)
DEF ------- CAT1 ------ 1000
DEF ------- CAT2 ------ 5000
DEF ------- CAT3 ------ 2000
ABC ------- CAT1 ------ 6000
ABC ------- CAT2 ------ 100
ABC ------- CAT3 ------ 50

DEF 得分为8000,高于 ABC 得分6150.因此出现在预期输出的顶部

我写了一个select语句,如下所示

从组织中选择org,cat,count(cat),其中year = 2006 group by org,cat order by org

我得到了 org 排序的结果,但我无法按照每种 org 的整体点数的降序排序输出

非常感谢任何帮助。谢谢 - Praveen

2 个答案:

答案 0 :(得分:0)

在查询结束时,您使用desc关键字,这将帮助您解决

答案 1 :(得分:0)

使用JOIN单独对org进行分组,并获取每个组的所有计数的SUM

SELECT t.org, t.cat, count(t.cat)
FROM table t JOIN (
    SELECT org, count(cat) SumCount
    FROM table
    WHERE year=2006 
    GROUP BY org
) tg ON t.org = tg.org
WHERE t.year = 2006 
GROUP BY t.org, t.cat
ORDER BY MAX(rs.SumCount), t.org DESC