SQL - 按出现次数排序

时间:2014-06-14 13:03:19

标签: sql ms-access sql-order-by

这是我的第一个问题,所以我希望我能够解释得很清楚, 我想按表中出现的次数来订购我的数据。 我的桌子是这样的:

id      Daynr
1       2
1       4
2       4
2       5
2       6
3       1
4       2
4       5

我希望它像这样排序:

id      Daynr
3       1
1       2
1       4
4       2
4       5
2       4
2       5
2       6

玩家#3在表格中有一天,玩家#1有2天。 我的桌子被命名为“dayid” id和Daynr都是外键,一起使它成为主键

我希望这足以解释我的问题,请向我索取更多信息,这是我第一次来这里。

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以通过计算每个ID发生的事件的次数来完成此操作。大多数数据库都支持窗口函数,因此您可以这样做:

select id, daynr
from (select t.*, count(*) over (partition by id) as cnt
      from table t
     ) t
order by cnt, id;

您也可以将其表达为join

select t.id, t.daynr
from table as t inner join
     (select id, count(*) as cnt
      from table
      group by id
     ) as tg
     on t.id = tg.id
order by tg.cnt, id;

请注意,这两项都包含id中的order by。这样,如果两个ID具有相同的计数,则id的所有行将一起显示。

相关问题