我有一个表格,其中包含我需要的所有信息,但格式不同。我想连接字段“名称”和“事件”以使其唯一,并按月和年对日期进行分组。此查询将始终在 2 个日期之间进行比较,当我指定 MONTH1(实际上意味着分析的第一个月)和 MONTH2(分析的第二个月)时执行以下操作。我还需要知道它们之间差异的百分比。
Example of Raw table:
======================
Name Activity Date
++++++++++++++++++++++++++++++++
Paul VideoGame 2015-02-01
John Play Guitar 2015-03-05
Paul Play Guitar 2015-02-01
Paul Play Guitar 2015-02-15
Paul VideoGame 2015-03-04
John Play Guitar 2015-03-06
Output wanted:
==================
Name+Activity Month1 Month2 Percentage
+++++++++++++++++++++++++++++++++++++++++++++++++++
John+Play Guitar 0 2 +200%
Paul+VideoGame 1 1 0%
Paul+Play Guitar 2 0 -200%
最佳答案
如果您知道月份,那么您可以通过条件聚合来完成此操作。我会将 name
和 activity
放在单独的列中。而且,我不太确定百分比列是如何计算的:
select name, activity,
sum(month(date) = 2) as month1,
sum(month(date) = 3) as month2,
sum(month(date) = 3) - sum(month(date) = 2)) as diff
from rawtable
group by name, activity;
如果您确实愿意,可以将 name
和 activity
连接为 concat_ws('+', name, Activity)。您可以通过乘以 100 将
diff` 转换为您想要的格式。
关于MySQL - 统计不同月份记录的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30656903/