【问题标题】:SQL ORDER BY GROUPSQL 按组排序
【发布时间】:2019-11-28 19:55:11
【问题描述】:
question category 
A           X
B           Y
C           X
D           X
E           Y

我想从最频繁的类别中输出

question category
A             X
C             X
D             X
B             Y
E             Y

【问题讨论】:

标签: mysql sql sql-order-by


【解决方案1】:

您可以尝试加入类别计数

select m.question, m.category  
from my_table  m
inner join  (
  select category, count(*) num
  from my_table  
   group by category 
) t on t.category = m.category
order by t.num desc, m.category, m.question

【讨论】:

    【解决方案2】:

    如果您运行的是 MySQL 8.0,则可以为此使用窗口函数。这避免了连接的需要。

    select *
    from mytable
    order by 
        count(*) over(partition by category) desc,
        question 
    

    【讨论】:

      【解决方案3】:

      使用按类别排序。

      select * from [table] 按类别排序

      【讨论】:

      • 这只会对它们进行排序,但不会将发生次数最多的放在顶部
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 2012-09-22
      • 2016-06-29
      • 2014-06-30
      • 2018-08-14
      • 1970-01-01
      相关资源
      最近更新 更多