如何根据条件 - SQL对结果进行分组

时间:2017-03-20 17:26:55

标签: sql tsql group-by

我有下表。

CustomerID  Country  company   email           invoice
01          USA      A         abc@gmail.com   100
02          USA      B         bng@yahoo.com   150
03          Canada   C         abc@gmail.com   100
04          Aus      D         bng@yahoo.com   150

我希望:

对于至少有两位客户使用yahoo作为电子邮件提供商的国家/地区,请显示这些国家/地区以及发票金额。 Sum应仅包含使用yahoo的客户的发票。 (按国家分组)

1 个答案:

答案 0 :(得分:2)

只需按域过滤电子邮件,然后对计数至少为2的国家/地区进行汇总。

select country, sum(invoice) sum_of_invoice
from your_table
where email like '%@yahoo.com'
group by country
having count(*) >= 2;

如果您想进一步包含其他类似的域名@yahoo.co.uk等,那么您可以在where子句中使用email like '%@yahoo.%'

如果您想获得该国家中至少有2个雅虎作为提供商的所有客户的发票总额,那么:

select country,
    sum(invoice) sum_of_invoice
from your_table
group by country
having count(case when email like '%@yahoo.com' then 1 end) >= 2;