基于 where 子句的 SQL 查询列名

3

我正在尝试从一个表中运行SQL查询,其中每个结果列中的数据都基于不同的 WHERE 子句。

例如:

我有一个名为 messages 的表,其中包含名为 type、size、country 的列。

type 的值包括 email 和 sms。

size 的值为整数。

我想创建一个视图,它有三列:country、sms、email。然后,我想显示每个国家的电子邮件和短信大小的总和。

我认为需要在列标题中使用 WHERE 子句,但我无法弄清楚如何做到这一点。

我正在尝试做这样的事情:

select country, sum(size) 
where type = 'sms' as "SMS", sum(size) 
where type = 'email' as "Email"
from messages table
group by country

我希望我的目标逻辑是清晰的。但我无法弄清楚语法。有人可以帮忙吗?谢谢!

注意:db是postgressql。

1个回答

3
您可以使用类似以下方式的case表达式来进行条件聚合:
select 
    country
  , sum(case when type='email' then size else 0 end) as email
  , sum(case when type='sms' then size else 0 end) as sms
from messages
group by country

谢谢。问题已解决!! - Jacob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接