【问题标题】:SQL Query to Show Distinct Values Joined with their CountSQL 查询以显示与其计数连接的不同值
【发布时间】:2013-11-11 03:06:57
【问题描述】:

在此处输入代码我想运行一个 sql 查询来显示不同的值及其计数。 更具体地说,我跟踪用户活动的表包含以下列:

userId, NumberOfSources,Source

我想查看上周每个用户的不同来源,按这些不同值的数量排序。 例如,所需的输出应如下所示:

userId   |   NumberOfSources   | Source
user1    |   3                 | sourceA
user1    |   3                 | sourceB
user1    |   3                 | sourceC
user2    |   2                 | sourceD
user2    |   2                 | sourceE

我能够运行查询来显示这两列中的每一列,但无法将它们组合起来。

显示不同值的数量:

SELECT userId, count(distinct source) FROM myTable GROUP BY userId ORDER BY count(distinct source) desc limit 10

显示不同的值:

SELECT distinct source, userId FROM myTable limit 10

谁能帮我解决这个问题?

谢谢, 奥利。

【问题讨论】:

  • 可能需要加入查询?

标签: sql join count distinct


【解决方案1】:
  SELECT userId, count(source) 
  FROM myTable GROUP BY userId 
  ORDER BY count(distinct source) desc limit 10
  Group by userId

【讨论】:

  • 这仅显示每个用户的(非明确?)来源的数量,但不显示来源本身。
【解决方案2】:

试试这个:

 SELECT userId, COUNT(source),source
 FROM myTable
 GROUP BY  userId ,source
 ORDER BY COUNT(source) DESC

【讨论】:

  • 这将计算用户每个来源的出现次数,而不是来源的数量。
【解决方案3】:

试试这个。

于 2013 年 12 月 23 日更新

select userId,count(source) NumberOfSources,Source from myTable group by Source,userId order by UserID,count(source) desc

-- SELECT userId, count(source) NumberOfSources,Source -- FROM myTable GROUP BY userId,Source -- ORDER BY userId,count(source) desc,Source limit 10

【讨论】:

  • 这将计算用户每个来源的出现次数,而不是来源的数量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-01
  • 1970-01-01
  • 2017-10-18
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多