Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-统计不同月份记录的发生次数_Mysql_Count - Fatal编程技术网

MySQL-统计不同月份记录的发生次数

MySQL-统计不同月份记录的发生次数,mysql,count,Mysql,Count,我有一个表格,其中包含我需要的所有信息,但格式不同。我想连接字段名称和活动以使其唯一,并按月份和年份对日期进行分组。此查询将始终在两个日期之间进行比较,当我指定MONTH1时,请执行下面的操作,实际上是指分析的第一个月和MONTH2,分析的第二个月。我还需要知道它们之间的差异百分比 Example of Raw table: ====================== Name Activity Date ++++++++++++++++++++++++++++++++ Pau

我有一个表格,其中包含我需要的所有信息,但格式不同。我想连接字段名称和活动以使其唯一,并按月份和年份对日期进行分组。此查询将始终在两个日期之间进行比较,当我指定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%

如果您知道月份,那么您可以使用条件聚合来实现这一点。我会把
名称
活动
放在单独的列中。而且,我不太确定百分比列是如何计算的:

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`转换为所需的格式