【问题标题】:Count unique occurrences per each distinct variable in MySQL计算 MySQL 中每个不同变量的唯一出现次数
【发布时间】:2021-01-30 07:00:09
【问题描述】:

我的表格结构如下:

表名my_table

name shop_id
____ _______
Mark aaa
Mark aaa
Mark bbb
Mark ccc
Mark ddd
Mark ddd
Jane aaa
Jane aaa
Jane bbb
Cody aaa

我要找:

  1. 访客总共光顾商店的次数
  2. 访客去了多少家独特的商店。

对于问题 1,我认为代码应该是这样的:

SELECT 
  name,
  count(name) as name_count
FROM my_table
GROUP BY name
ORDER BY name_count DESC

但我想不出第二部分。请帮忙!应该是这样的:

name shop_count
____ _______
Mark 4
Jane 2
Cody 1

谢谢。

【问题讨论】:

  • 请为问题的两个部分添加您想要的结果。

标签: mysql sql database unique


【解决方案1】:

为独特的商店使用DISTINCT

SELECT 
  name,
  COUNT(name) as name_count
  COUNT(DISTINCT shop_id) AS unique_shop
FROM my_table
GROUP BY name
ORDER BY name_count DESC

【讨论】:

  • @ArdorOrenda 。 . .如果这有效,那么您应该接受答案。我只会使用count(*) 而不是count(name)——我不确定为什么人们喜欢在没有必要的情况下在列中计算非NULL 值。
  • COUNT(*) 的@GordonLinoff 复杂度超过COUNT(name)
  • @aRvi 。 . .在我熟悉的任何数据库中都不是这样。鉴于count(*) 确实 less (只计算行数而不是检查每行中的值是否不是NULL),我希望这可以推广到所有数据库。
猜你喜欢
  • 2011-05-12
  • 1970-01-01
  • 2012-10-25
  • 1970-01-01
  • 1970-01-01
  • 2021-07-25
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多