MySQL - 统计不同月份记录的出现次数

标签 mysql count

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

最佳答案

如果您知道月份,那么您可以通过条件聚合来完成此操作。我会将 nameactivity 放在单独的列中。而且,我不太确定百分比列是如何计算的:

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;

如果您确实愿意,可以将 nameactivity 连接为 concat_ws('+', name, Activity)。您可以通过乘以 100 将 diff` 转换为您想要的格式。

关于MySQL - 统计不同月份记录的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30656903/

相关文章:

php - 调用未定义函数 mysqli()

mysql - SELECT COLUMN 和 COUNT 区分大小写,mysql?

php - 准备好的报表返回获取结果和计数

php - mysql如何将同一个表的一个字段的数据复制到另一个字段

mysql - MySQL 中是否有一个函数不允许在已经从数据库中的 ENUM 数据类型中选择一个值之后直接选择一个值?

mysql - 如何访问未映射为实体类的数据库表

PHP 在传递给 json_encode 之前进行 usort

MySQL 查询连接和计数查询

sql-server-2008 - 计算具有特定列数的内容的行

java - 计算数组内的类(class)