【问题标题】:Select a top 10 list by number of times that person was entered [duplicate]按输入该人的次数选择前 10 名列表[重复]
【发布时间】:2020-06-03 05:33:58
【问题描述】:

我有一个表格来记录用户完成某事的次数。

我想要一个可以帮助我创建前 10 名列表以显示领导者的查询。

  1. 匿名 - 10
  2. 匿名 2 - 7
  3. 匿名 3 -3

我的查询当前选择了某项的全部计数并且只有 1 个用户返回以下内容:

  1. 匿名 - 20

下面是查询:

Select count(referral_person) AS C, referral_person 
from item_referral 
ORDER by count(referral_person) DESC;

我做错了什么?

【问题讨论】:

  • 你需要GROUP BY referral_person

标签: mysql


【解决方案1】:

您的查询缺少 group by 子句 - 但它在 select 子句中有一个聚合函数。所以 MySQL 只给你一行,表中的总行数和referral_person 的任意值。

在大多数其他数据库中,这会产生语法错误 - 在 MySQL 中也是如此,如果启用了 sql 模式 ONLY_FULL_GROUP_BY - 这将使您更容易发现问题。

另外,要选择前 10 名,您可以使用 order bylimit

好像你想要的:

select referral_person, count(*) cnt
from item_referral
group by referral_person
order by cnt desc
limit 10

【讨论】:

    猜你喜欢
    • 2015-10-12
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    相关资源
    最近更新 更多