我有一张看起来像这样的桌子
email product_id
nen@something.com 20
nen@something.com 10
nen@something.com 20
nen@something.com 20
nen@something.com 10
我想创建一个表格视图来统计购买产品(每封电子邮件)的次数并将其显示在一行中。
email product_10 product_20
nen@something.com 2 3
我尝试使用以下sql来执行此操作,但是它不起作用。
select email,count(product_id) from mytable group by email,product_id;
它给了我一张看起来像这样的桌子。
email count(product_id)
nen@something.com 2
nen@something.com 3
我在这里想念什么?如何将计数的产品放入一行?
答案 0 :(得分:1)
用例何时
return
答案 1 :(得分:1)
如果使用的是Postgres,则可以使用filter
子句。更优雅,通常快一点:
select email,
count(*) filter (where productid = 10) as product_10,
count(*) filter (where productid = 20) as product_20
from t
group by email;
这是ANSI / ISO标准功能。