【问题标题】:Ordering by COUNT() in SQL在 SQL 中按 COUNT() 排序
【发布时间】:2011-09-20 00:03:18
【问题描述】:

假设我有一个这样的数据库表:

users
------
id
email
referrerID

如何按推荐次数最多的成员排序?我正在尝试以下方式:

SELECT id,email FROM users WHERE 1 ORDER BY COUNT(referrerID) DESC;

但这似乎不起作用。怎么了?

我认为默认值 0 也可能会以某种方式影响这一点?

【问题讨论】:

  • 这张表的PK是多少?
  • 主键。每个 id 是否有多个行,还是 id 是唯一的?
  • 所以你想统计referrerID列中最常见的值以获得最多产的referrerIDs?您还需要推荐人电子邮件吗?
  • email 无关紧要,只是 id。但我想将最常见的引用者 ID 从上到下。如果referrerID 0 可以是最后一个,那就太棒了。

标签: sql select count sql-order-by


【解决方案1】:

以下澄清

SELECT referrerID,
       COUNT(id) as Num
FROM   users
GROUP  BY referrerID
ORDER  BY CASE
            WHEN referrerID = 0 THEN -1
            ELSE COUNT(id)
          END DESC;  

【讨论】:

  • 第二个有效,但是有没有办法让referrerID 0(零)成为最后一个条目而不是所有条目?
  • @Flipper ORDER BY CASE WHEN referrerID = 0 THEN -1 ELSE COUNT(id) END DESC
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-23
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多