【问题标题】:Return count of how many occurrences there are返回出现次数的计数
【发布时间】:2021-10-06 08:47:34
【问题描述】:

我有一个如下所示的 MySQL 表:

user_id other_id date
123456789 123 date1
213454678 123 date2

这里,user_id 是一个多键,并且在某些条目中重复出现。日期与此任务无关。 我试过这个查询:

select user_id, count(user_id) as count from exp_pixel_data group by user_id;

这又回来了

user_id count
123324345456456576587 7
453545435343455343453 3
777676766776675654454 2
345565664545665654645 1

这个结果告诉我 user_id 在表中出现的频率。这可能是一个好的开始,但现在我需要这个计数在最后一个查询的结果中出现的频率。那么问题来了,表中有多少个user_ids出现了7次呢? 我需要一个返回如下内容的 SQL 查询:

count times_ocurring
1 123
2 100
3 2

等等。

这表示主表中有123次user_ids出现1次,100次user_ids出现2次,2次user_ids出现3次。

【问题讨论】:

  • 能否添加您的查询?这样,我们就有了一个起点,可以为您提供来自的建议
  • 当然可以。我的查询是mysql> select user_id , count(user_id) from exp_pixel_data group by user_id;,它只返回 user_id | count(user_id) 所以所有 user_ids 的出现。
  • 查询产生了预期的结果,但它与您提供的数据不匹配。如果这不是您想要的,您需要描述您的实际需求。考虑到特定数据,您能否在问题中添加一些最少的数据以及预期的确切结果?
  • 我会等待描述。对不起。没有足够的细节来猜测。
  • 请分享更多细节,并请通过编辑添加全部澄清您的问题,而不是评论部分

标签: mysql sql


【解决方案1】:

您是否有可能尝试这样做(计数)?

Fiddle

SELECT COUNT(xcount) AS count_of_counts
     , xcount
  FROM (SELECT user_id
             , COUNT(user_id) AS xcount
          FROM exp_pixel_data
         GROUP BY user_id
       ) xxx
 GROUP BY xcount
 ORDER BY COUNT(xcount)
;

对于 MySQL,我们可以在 ORDER BY 中使用派生列名:

SELECT COUNT(xcount) AS count_of_counts
     , xcount
  FROM (SELECT user_id
             , COUNT(user_id) AS xcount
          FROM exp_pixel_data
         GROUP BY user_id
       ) xxx
 GROUP BY xcount
 ORDER BY count_of_counts
;

结果(下面给出测试数据):

+-----------------+--------+
| count_of_counts | xcount |
+-----------------+--------+
|               1 |      5 |
|               2 |      2 |
|               2 |      1 |
+-----------------+--------+

设置:

CREATE TABLE exp_pixel_data (user_id   int, val  int default 0);

INSERT INTO exp_pixel_data (user_id) VALUES
    (12345)
  , (12345)
  , (12399)
  , (12399)
  , (12388)
  , (12377)
  , (12355)
  , (12355)
  , (12355)
  , (12355)
  , (12355)
;

【讨论】:

    猜你喜欢
    • 2021-06-04
    • 2012-10-15
    • 2021-09-29
    • 1970-01-01
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    相关资源
    最近更新 更多