【问题标题】:MySQL - Sort results in descending order of overall countMySQL - 按总计数的降序对结果进行排序
【发布时间】:2011-06-28 20:41:02
【问题描述】:

我有一张如下表

年份 -------- 组织 -------- 名称 ---------- 类别 -------- 积分
2005 -------- ABC ------- N1 ---------- CAT1 -------- 10
2006 -------- DEF -------- N2 ---------- CAT2 -------- 5
等等

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

我需要如下输出

组织 ------- 类别 ------ 点数(按组织总点数降序排列)
DEF ------- CAT1 ------ 1000
DEF ------- CAT2 ------ 5000
DEF ------- CAT3 ------ 2000
ABC ------- CAT1 ------ 6000
ABC ------- CAT2 ------ 100
ABC ------- CAT3 ------ 50

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

我写了如下的select语句

select org, cat, count(cat) from table where year=2006 group by org, cat order by org

我得到了按 org 排序的结果,但我无法让输出按每种 org

类型的总点数的降序排序

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

【问题讨论】:

    标签: mysql select


    【解决方案1】:

    在查询的最后你使用 desc 关键字,这将帮助你

    【讨论】:

      【解决方案2】:

      使用 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
      

      【讨论】:

        猜你喜欢
        • 2021-12-28
        • 2013-09-08
        • 2014-02-16
        • 2018-02-05
        • 2011-03-25
        • 1970-01-01
        • 1970-01-01
        • 2013-09-20
        相关资源
        最近更新 更多