日期拆分为 mysql 中的列
Date split in columns in mysql
我执行了一个事件table,其中我想根据日期分隔列
SELECT Event_ID,Name,count(Customer_Id) FROM UNLIMITED.Event_Execution a
join UNLIMITED.Event_Master b on a.Event_Id=b.ID
Where Event_Execution_Date_ID = '20211007'
group by Event_Id
order by Count(Customer_Id) desc;
期望的输出
Event_ID Name 20211006 20211007
1 Offer1 1,218 6,876
2 Offer2 10,212 4,123
您需要条件聚合:
select
event_id,
name,
count(case when event_execution_date_id = '20211006' then customer_id end) as cnt_20211006,
count(case when event_execution_date_id = '20211007' then customer_id end) as cnt_20211007
from unlimited.event_execution a
join unlimited.event_master b on a.event_id = b.id
where event_execution_date_id in ('20211006', '20211007')
group by event_id
order by count(customer_id) desc;
旁注:
- a 和 b 是错误的别名。使用助记符,例如e 用于执行 table 和 m 用于主 table.
- 在处理多个 table 时,限定所有列。比如
customer_id
属于哪个table?
- 为什么
count(customer_id)
?客户 ID 是可为空的列吗?或者它是否驻留在执行 table 中并且您希望能够在某个时间外部加入此 table 并获得正确的零计数?或者计算表达式而不仅仅是行 (count(*)
) 的原因是什么?
我执行了一个事件table,其中我想根据日期分隔列
SELECT Event_ID,Name,count(Customer_Id) FROM UNLIMITED.Event_Execution a
join UNLIMITED.Event_Master b on a.Event_Id=b.ID
Where Event_Execution_Date_ID = '20211007'
group by Event_Id
order by Count(Customer_Id) desc;
期望的输出
Event_ID Name 20211006 20211007
1 Offer1 1,218 6,876
2 Offer2 10,212 4,123
您需要条件聚合:
select
event_id,
name,
count(case when event_execution_date_id = '20211006' then customer_id end) as cnt_20211006,
count(case when event_execution_date_id = '20211007' then customer_id end) as cnt_20211007
from unlimited.event_execution a
join unlimited.event_master b on a.event_id = b.id
where event_execution_date_id in ('20211006', '20211007')
group by event_id
order by count(customer_id) desc;
旁注:
- a 和 b 是错误的别名。使用助记符,例如e 用于执行 table 和 m 用于主 table.
- 在处理多个 table 时,限定所有列。比如
customer_id
属于哪个table? - 为什么
count(customer_id)
?客户 ID 是可为空的列吗?或者它是否驻留在执行 table 中并且您希望能够在某个时间外部加入此 table 并获得正确的零计数?或者计算表达式而不仅仅是行 (count(*)
) 的原因是什么?