【问题标题】:Is it possible to combine these two sql statements into one statement using group by?是否可以使用 group by 将这两个 sql 语句组合成一个语句?
【发布时间】:2022-01-08 12:03:39
【问题描述】:
select client_type, count(gender) as num_males
from clients
where gender = 'Male'
group by client_type;
select client_type, count(gender) as num_females
from clients
where gender = 'Female'
group by client_type;

以下 SQL 语句按客户端类型显示男性数量,然后按客户端类型显示女性数量。我想要一条 SQL 语句来显示以下列:client_type、count(gender = 'Male')、count(gender = 'Female')。可以这样做吗?

【问题讨论】:

  • 例如count(iif(gender = 'female', 1, NULL))
  • 一些 SQL 实现(如 MySQL)将允许您使用 COUNT(gender='Male') 类型的语法。

标签: sql select group-by count


【解决方案1】:

你可以数出几个case 表达式:

SELECT   client_type, 
         COUNT(CASE gender WHEN 'Male' THEN 1 END) AS num_males,
         COUNT(CASE gender WHEN 'Female' THEN 1 END) AS num_females
FROM     clients
GROUP BY client_type;

【讨论】:

  • 运行您的 sql 语句时出现以下错误 'ORA-00905: missing keyword
  • @C-W-M-Oliver8012 抱歉,忘记了case 表达式中的then 子句。我不应该这么晚才回答这个问题:-(已编辑和修复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多