【发布时间】:2021-10-08 17:35:15
【问题描述】:
当客户来参加会议时,我有一个表格记录。我想创建一个图表来比较去年完成的会话数。我想出了如何使用以下 sql 获取每个月的结果:
SELECT
DAY(`SessionDate`) as month_day,
SUM(if(MONTH(SessionDate) = 1, 1, 0)) AS Jan,
SUM(if(MONTH(SessionDate) = 2, 1, 0)) AS Feb,
SUM(if(MONTH(SessionDate) = 3, 1, 0)) AS Mar,
SUM(if(MONTH(SessionDate) = 4, 1, 0)) AS Apr,
SUM(if(MONTH(SessionDate) = 5, 1, 0)) AS May,
SUM(if(MONTH(SessionDate) = 6, 1, 0)) AS Jun,
SUM(if(MONTH(SessionDate) = 7, 1, 0)) AS Jul,
SUM(if(MONTH(SessionDate) = 8, 1, 0)) AS Aug,
SUM(if(MONTH(SessionDate) = 9, 1, 0)) AS Sep,
SUM(if(MONTH(SessionDate) = 10, 1, 0)) AS 'Oct',
SUM(if(MONTH(SessionDate) = 11, 1, 0)) AS 'Nov',
SUM(if(MONTH(SessionDate) = 12, 1, 0)) AS 'Dec'
FROM sessions
WHERE
`SessionDate` >= NOW()-Interval 12 MONTH
GROUP BY DAY(`SessionDate`)
ORDER BY DAY(SessionDate)
结果如下所示:
------------------------------...
|month_day | Jan | Feb | Mar |...
------------------------------...
| 1| 1 | 2 | 0 |...
| 2| 2 | 3 | 1 |...
| 3| 0 | 4 | 1 |...
| 4| 0 | 4 | 2 |...
| 5| 4 | 3 | 3 |...
| 6| 2 | 1 | 4 |...
| 7| 2 | 0 | 4 |...
| 8| 1 | 2 | 4 |...
...
但是,这是比较每年 1 月 1 日到 2 月 1 日到 3 月 1 日... 我想查看和比较的是每个月的第一个星期一有多少会话...
假设 1. 一月是星期五,1. 二月是星期二,三月从星期三开始,那么我的结果应该是这样的:
-----------------------------...
|weekday | Jan | Feb | Mar |...
-----------------------------...
| 1st Mon | | | |...
| 1st Tue | | 2 | |...
| 1st Wed | | 3 | 1 |...
| 1st Thu | | 4 | 0 |...
| 1st Fri | 1 | 4 | 1 |...
| 1st Sat | 2 | 3 | 1 |...
| 1st Sun | 0 | 1 | 2 |...
| 2nd Mon | 0 | 0 | 3 |...
| 2nd Tue | 4 | 2 | 4 |...
| 2nd Wed | 1 | 2 | 4 |...
| 2nd Thu | 1 | 2 | 4 |...
| 2nd Fri | 3 | 3 | 2 |...
| 2nd Sat | 4 | 1 | 0 |...
| 2nd Sun | 2 | 1 | 0 |...
| 3rd Mon | 0 | 0 | 1 |...
| 3rd Tue | 1 | 0 | 4 |...
... etc
换句话说,图表将显示哪些工作日受欢迎(例如,每个月的第一个星期六比第三个星期六有更多的会话)我用 php 和谷歌静态图表绘制图表,所以没问题。让每月数据抵消所以工作日在同一行是我无法弄清楚的。希望我的问题有意义。我是一名业余编码员,并且是 stackoverflow 的新手,因此我们将不胜感激。
【问题讨论】:
-
嘿!我已经“观看了 40 次”! ( :-( 很遗憾,所有 40 次都是我自己检查并希望有人为我解答。看起来我将不得不重新考虑我的项目并每个月进行单独的 MySQL 调用,然后将它们转移到 PHP 中)