Sql 如何获取每个客户的询问栏

Sql 如何获取每个客户的询问栏,sql,Sql,我有一张桌子叫a桌 我需要得到客户ID,2015年的sum(收入),2016年的sum(收入),他是否购买过productId A(布尔值),是总sum(收入)>1000(布尔值),总发票ID的数量 所有这些都在一个查询中,结果应该是每个客户一行 请帮帮我,我都不知道怎么开始 这基本上是条件聚合: select customerid, sum(case when extract(year from date) = 2015 then sales end) as sales_201

我有一张桌子叫a桌

我需要得到客户ID,2015年的sum(收入),2016年的sum(收入),他是否购买过productId A(布尔值),是总sum(收入)>1000(布尔值),总发票ID的数量

所有这些都在一个查询中,结果应该是每个客户一行


请帮帮我,我都不知道怎么开始

这基本上是条件聚合:

select customerid,
       sum(case when extract(year from date) = 2015 then sales end) as sales_2015,
       sum(case when extract(year from date) = 2016 then sales end) as sales_2016,
       max( product = 'A' ) as ever_bought_a,
       sum(income) > 1000 as sum_exceeds_1000,
       count(*) as num_invoices
from t
group by customerid;

您尚未指定数据库,因此这实际上是伪代码。您需要根据您的特定数据库对其进行调整。

到目前为止您做了什么?请提供一个工作SQL,其中包含示例数据和您尝试的内容。还请指定您正在使用的数据库引擎。谢谢,如果客户曾经购买过产品A,请您向我解释max(产品“A”)如何为我提供帮助?另外,如果他以超过1000英镑的价格购买,那么总和(收入)>1000是如何给我一个布尔答案的呢?@AviCohen。在一个支持布尔值的数据库中——这是您的问题的前提——
max()
的布尔值相当于一个聚合的