MySQL 获取日/月表/矩阵?

标签 mysql pivot-table

<分区>

用一个简单的日期和值表:

+------------+-------+
| date       | count |
+------------+-------+
| 2015-01-01 | 5     |
| 2015-01-02 | 2     |
| 2015-07-02 | 20    |

如何使用可能使用子选择和连接的单个 MySQL 查询获得所有月份作为列、日期作为行、具有值的矩阵?

+-----+----------+----------+---------
| Day | January  | February | March...
+-----+----------+----------+---------
| 1   | 5        | 8        | 12
| 2   | 2        | 9        | 5
| 3   | 5        | 12       | 6

如果不使用 PHP 或任何其他脚本工具,这可能吗?

这将用于可视化几天或几个月的趋势和峰值。

最佳答案

您基本上拥有的是一个数据透视表,您可以使用条件总和(即其中包含 CASE 的 SUM)完成此操作,按天数分组以获取各个行:

select DAY(date) as Day,
       sum(case when MONTH(date) = 1 then count else 0 end) as January,
       sum(case when MONTH(date) = 2 then count else 0 end) as February,
       --...
       sum(case when MONTH(date) = 12 then count else 0 end) as December
from myTable
group by DAY(date)

关于MySQL 获取日/月表/矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41584146/

相关文章:

php - 统计mysql中某一列的不同字符串

MySQL 语法跨版本变化

mysql - 为 vb.net 2010 创建远程 mysql 数据源

mysql - 如何将行转换为没有具有唯一值的列的列?

php - mysql 查询中的 group_concat 提前停止

python - 如何使用python将数据列表、数组插入数据库MySQL?

mysql - 如何在 MySQL 中返回数据透视表输出?

python - 在 Pandas 中,如何制作数据透视表来计数和跳过重复?

excel - 刷新数据透视表

excel - 如何在数据透视表中添加 "helper column"