【问题标题】:How can we use multiple count and multiple group by in SQL at the same time?我们如何在 SQL 中同时使用多个 count 和多个 group by?
【发布时间】:2016-05-24 02:08:17
【问题描述】:

所以我有这张桌子

             `gender  country  age  name  ID
              male    VietNam  20   Q     890 
              female  China    30   K     209
              female  Japan    25   O     302
              female  VietNam  20   L     203
              male    China    20   E     504`

我想做一个查询,可以像这样按计数和分组列出个人中具有相同性别,相同国家和相同年龄的人数

Select gender,COUNT(*) from Employee Group BY gender Select country,COUNT(*) from Employee Group BY country Select age,COUNT(*) from Employee Group BY age

有没有什么办法可以只用一个选择? 提前感谢,对不起我的英语不好

【问题讨论】:

  • 您使用的是什么 DBMS?MySQL、Sql Server、Oracle、Postgres 等?
  • SQL 服务器管理工​​作室

标签: sql count group-by


【解决方案1】:

您可以 UNION 在结果集的单独记录中获取这些结果:

 Select 'Gender' as GroupByType, gender as GroupByValue ,COUNT(*) from Employee Group BY gender
 UNION ALL
 Select 'Country', country,COUNT(*) from Employee Group BY country
 UNION ALL
 Select 'Age', age,COUNT(*) from Employee Group BY age

【讨论】:

  • 第二个选择需要'Country'和country之间的逗号;)
  • 执行查询时出现此错误:将 nvarchar 值 'male' 转换为数据类型 int 时转换失败。有什么办法可以解决吗?感谢您的帮助
  • 在最后一个查询中尝试 CAST(age as VARCHAR(20)) 看看这是否能让它开心。
  • 最后一个查询看起来像这样? Select 'Age', age,COUNT(*) from Employee Group BY age,CAST(age as VARCHAR(20))
  • 我很抱歉没有马上回来。最后一个查询看起来像SELECT 'Age', CAST(age as VARCHAR(20)), Count(*) from Employee GROUP BY age。我们想要强制转换的原因是您的数据库将尝试将该字段中的所有记录强制转换为整数,否则这就是导致您遇到错误的原因。 Union 将每个查询的结果堆叠起来,因此 UNION 中的每个字段都必须是相同的type。所以在这里我们只是将我们的号码强制为文本,以便它与其他查询保持一致。
【解决方案2】:

如果您的 RDBMS 支持...SQL ServerOracle 和其他支持...。不确定您使用的是什么。

Group by Grouping sets

Select count(*), gender, country, age 
from employee 
group by grouping sets ((gender), (country), (age ))

并且根据您要查找的输出类型...这将导致 4 列计数、性别、国家和年龄列,其中 4 列中的 2 列将始终为空。

它会产生与 JNevill 类似的输出,除了没有 groupbyType,而是group by 中的每个值都有一个单独的列

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    相关资源
    最近更新 更多