我试图从1个表中运行sql查询,我希望每个结果列中的数据基于不同的where子句。
示例:
我有一个名为messages的表,其中包含名为type,size,country
的列类型的值包括电子邮件和短信。
大小的值是整数。
我想创建一个包含3列的视图: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。
答案 0 :(得分: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