2011-02-17 51 views
1

我有一个表格如下MySQL - 按结果从大到小排列结果

year -------- org ------- name -------- - 类别--------积分
2005 -------- ABC ------- N1 ---------- CAT1 ------ - 10
2006 -------- DEF ------- N2 ---------- CAT2 -------- 5
etc

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

我需要的输出如下

有机------- ------类别分
DEF(降序组织的总体点的顺序排序) - - - - - CAT1 ------ 1000
DEF ------- CAT2 ------ 5000
DEF ------- CAT3 ------ 2000
ABC - ------ CAT1 ------ 6000
ABC ------- CAT2 ------ 100
ABC ------- CAT3 ------ 50

DEF得分为8000,比比分ABC这是6150所以出现在预期输出的顶部

我写了一个select语句如下

选择组织,猫较高从表计数(猫),其中年= 2006年集团通过组织,通过组织

猫为了我得到的结果通过组织有序,但我无法得到输出递减点的整体数量的顺序排序每一个ty pe org

任何帮助,非常感谢。谢谢 - 普利文

回答

0

使用连接到组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 
0

在查询u使用DESC关键字的结束,这将有助于你出来