我的桌子看起来像这样:
Company Date Status
-------------------------------------
ABC 1-Jan-19 Event
ABC 1-Feb-19 Event
ABC 1-Jan-19 Event
ABC 1-Feb-19 Event
DEF 1-Feb-19 Event
DEF 1-Mar-19 Event
DEF 1-Feb-19 Event
DEF 1-Mar-19 Event
GHI 1-Mar-19 Event
GHI 1-Mar-19 Event
JKL 1-Jan-19 Event
JKL 1-Feb-19 Event
JKL 1-Feb-19 Event
JKL 1-Mar-19 Event
我试图找出我每个月有多少家活跃公司。一个活跃的公司通过在该月中至少举行一次活动进行分类。
请参阅上面数据的下表。我只在寻找该月的月份和活跃公司的最终结果。
Jan Feb Mar
ABC 2 2
DEF 2 2
GHI 2
JKL 1 2 1
-------------------
Active 2 3 3
当然,这将是一个观点。
在此先感谢您的帮助。
最佳答案
您可以使用条件聚合来透视数据,并使用WITH ROLLUP
生成摘要记录:
CREATE VIEW my_view AS
SELECT
company,
SUM(YEAR(my_date) = 2019 AND MONTH(my_date) = 1 AND status = 'Event') Jan,
SUM(YEAR(my_date) = 2019 AND MONTH(my_date) = 2 AND status = 'Event') Feb,
SUM(YEAR(my_date) = 2019 AND MONTH(my_date) = 3 AND status = 'Event') Mar
FROM my_table
GROUP BY company WITH ROLLUP;
笔记:
这假定
date
是类似日期的数据类型在条件中包含
YEAR()
总是一个好主意;毫无疑问,您的数据可能会散布几年date
不是列名的最佳选择,因为它与保留字冲突。我将其重命名为my_date
关于mysql - 如何按月创建活跃公司的 View ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58329781/