![](/img/trans.png)
[英]SQL - Difficulty joining tables and using specific date criteria for aggregate functions
[英]SQL how to aggregate by date and multiple criteria
我有这张桌子:
ID | 数量 | 方法 | 日期 |
---|---|---|---|
01 | 10 | 一个 | 2022-01-24 12:27:14.440 |
02 | 80 | 一个 | 2022-01-24 12:27:14.440 |
01 | 20 | D | 2022-02-24 12:27:14.440 |
01 | 10 | D | 2022-02-24 12:27:14.440 |
02 | 20 | D | 2022-02-24 12:27:14.440 |
03 | 30 | D | 2022-02-24 12:27:14.440 |
我想要这个:
方法 | ammount_sum_jan | n_transaction_jan | n_customer_jan | ammount_sum_feb | n_transaction_feb | n_customer_feb |
---|---|---|---|---|---|---|
一个 | 10 | 2 | 2 | 0 | 0 | 0 |
D | 0 | 0 | 0 | 80 | 4 | 3 |
这是一个包含 7 列和行数的表,等于方法的数量。
我可以通过一个查询得到它吗?
您希望按方法汇总数据,并为 1 月数据和 2 月数据设置单独的列。 您可以通过条件聚合(聚合函数中的CASE
表达式)得到它,
select
method,
sum(case when month(date) = 1 then ammount else 0 end) as ammount_sum_jan,
count(case when month(date) = 1 then 1 end) as n_transaction_jan,
count(distinct case when month(date) = 1 then id end) as n_customer_jan,
sum(case when month(date) = 2 then ammount else 0 end) as ammount_sum_feb,
count(case when month(date) = 2 then 1 end) as n_transaction_feb,
count(distinct case when month(date) = 2 then id end) as n_customer_feb
from mytable
group by method
order by method;
它被称为枢轴,并且对于 dfix 日期看起来像这样。 年份和月份方法的聚合,您可以对您的号码进行计数或求和
select
`method`,
SUM(CASE WHEN EXTRACT( YEAR_MONTH FROM `date` ) = '202201' then `ammount` ELSe 0 END) ammount_sum_jan,
SUM(CASE WHEN EXTRACT( YEAR_MONTH FROM `date` ) = '202201' then 1 ELSe 0 END) n_transaction_jan,
COUNT(DISTINCT CASE WHEN EXTRACT( YEAR_MONTH FROM `date` ) = '202201' then `d` ELSe 0 END) n_customer_jan,
SUM(CASE WHEN EXTRACT( YEAR_MONTH FROM `date` ) = '202202' then `ammount` ELSe 0 END) ammount_sum_feb,
SUM(CASE WHEN EXTRACT( YEAR_MONTH FROM `date` ) = '202202' then 1 ELSe 0 END) n_transaction_feb,
COUNT(DISTINCT CASE WHEN EXTRACT( YEAR_MONTH FROM `date` ) = '202202' then `d` ELSe 0 END) n_customer_feb
from tab1
GROUP BY `method`
http://www.sqlfiddle.com/#!9/31d8ef/10
更有趣的是让这种动态
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.