2010-02-10 144 views
4

我注意到一些帮助构建SQL陈述。目前,我有以下几点:SQL ORDER BY GROUP BY内部

SELECT a, b, count(1) 
FROM table 
GROUP BY a, b 
ORDER BY a asc, count(1) DESC 

每行显示内各由一个字母,然后分组和顺序由B到最低的最高发生的所有独特B的总和。我实际上喜欢的是能够按A的每个分组内的总数进行排序(将每行视为小计)。

+0

您能否提供一个数据输出的例子。例如目前你有“美国,加利福尼亚,15”,“美国,华盛顿,10”; “澳大利亚,维多利亚3”。你想如何重新安排这些数据? – 2010-02-10 15:28:15

+0

“我实际上喜欢的是能够按A的每个分组内的总数进行排序(将每一行视为小计)”。 b? – Brettski 2010-02-10 15:29:09

+0

我不确定你在找什么。你能否澄清一下,或者添加一个小例子表格,当前结果以及你想要得到的结果? – 2010-02-10 15:30:01

回答

4
SELECT a, b, COUNT(*) AS bcnt, 
     (
     SELECT COUNT(*) 
     FROM mytable mi 
     WHERE mi.a = mo.a 
     ) AS acnt 
FROM mytable mo 
GROUP BY 
     a, b 
ORDER BY 
     acnt DESC, bcnt DESC