mysql 使用 count 和 distinct count

标签 mysql sql count distinct

我之前被问过这个问题,一直无法回答这个问题一直困扰着我..

假设我们有一张包含客户及其居住城市的表格。

如果我想查询城市的唯一数量,以及每个城市出现的次数,该怎么办。

更清楚一点:

Toronto
Toronto
Toronto
Oshawa
Oshawa
Distinct cities: 2
Toronto: 3
Oshawa: 2

答案可能很简单,我现在脑子里一片糊涂!

最佳答案

这将为每个城市返回一行,其中包含城市名称和城市出现的次数:

SELECT 
    city,
    COUNT(*) 
FROM clients
GROUP BY city

城市总数就是查询返回的行数。如果你真的想让它出现在记录集上,我可以想到两种方法(我都不是特别喜欢)。

  1. UNION 查询:

    SELECT 'CITIES' as city, COUNT(DISTINCT city) 
    FROM clients
    UNION
    SELECT city, COUNT(*) 
    FROM clients
    GROUP BY city
    
  2. SELECT 子句的子查询:

    SELECT 
      (SELECT COUNT(DISTINCT city)) AS all, 
      city,
      COUNT(*) 
    FROM clients
    GROUP BY city
    

关于mysql 使用 count 和 distinct count,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9470897/

相关文章:

php - 将变量从 GET 输入到 SQL 数据库不起作用

mysql - 将两列相减,然后将结果相减,并对结果求和以显示最小数量

javascript - 简单的 jquery 第二个计数器

c# - 带有 Entity Framework 6 的 MySQL

mysql - 查询SQL数据库-一对多查询

java - 'ROWNUM' 中的未知列 'where clause'

sql - LEFT JOIN 混淆——我需要检索学生人数

mysql - SQL 获取特定列而不仅仅是外键

php - 这是我的 laravel 项目中的一个额外的 ")",它为我查询 laravel

c++ - C - 读取文件并计算行数和列数