我有一个包含聊天记录的数据库,其中包含datime字段,messsage的作者和消息。
我不想创建一个返回表格的查询,该表格将工作日与一天中的小时数相关联,计算发送的邮件数量。
这样的事情:
+-------+--------+--------+----------+------------+---------+--------+---------+
| HOURS | SUNDAY | MONDAY | THURSDAY | WEDNESDAY | TUESDAY | FRIDAY | SABBATH |
+-------+--------+--------+----------+------------+---------+--------+---------+
| 00 | 5 | 25 | 44 | 46 | 23 | 12 | 42 |
| 01 | 4 | 545 | 35 | 76 | 65 | 15 | 354 |
| 02 | 36 | 654 | 365 | 76 | 65 | 42 | 44 |
| 03 | 3 | 578 | 678 | 83 | 21 | 32 | 88 |
| 04 | 8 | 78 | 678 | 92 | 878 | 34 | 98 |
| 05 | 87 | 987 | 89 | 26 | 09 | 67 | 75 |
| 06 | 54 | 65 | 98 | 23 | 65 | 54 | 55 |
| 07 | 98 | 64 | 07 | 43 | 656 | 42 | 47 |
| 08 | 98 | 56 | 89 | 65 | 76 | 43 | 62 |
| 09 | 98 | 768 | 678 | 75 | 76 | 26 | 763 |
| 10 | 3 | 56 | 54 | 87 | 87 | 76 | 45 |
| 11 | 39 | 567 | 236 | 76 | 897 | 12 | 62 |
| 12 | 987 | 765 | 342 | 87 | 987 | 76 | 67 |
| 13 | 45 | 456 | 456 | 97 | 43 | 69 | 876 |
| 14 | 235 | 87 | 44 | 24 | 2865 | 98 | 86 |
| 15 | 543 | 987 | 44 | 45 | 367 | 87 | 87 |
| 16 | 897 | 87 | 64 | 37 | 898 | 67 | 98 |
| 17 | 678 | 67 | 76 | 54 | 245 | 56 | 87 |
| 18 | 766 | 89 | 99 | 54 | 689 | 35 | 24 |
| 19 | 98 | 98 | 987 | 55 | 467 | 76 | 25 |
| 20 | 45 | 73 | 789 | 62 | 98 | 35 | 177 |
| 21 | 876 | 897 | 35 | 289 | 56 | 76 | 57 |
| 22 | 876 | 978 | 546 | 35 | 874 | 24 | 543 |
| 23 | 76 | 945 | 456 | 64 | 87 | 64 | 76 |
+-------+--------+--------+----------+------------+---------+--------+---------+
可以做到吗?
我已尝试使用此代码,我认为这是一个开始,但我真的不知道我是否朝着正确的方向前进。
select
hour(sendtime) as 'HOUR',
dayofweek(sendtime) = 1 as 'Sunday',
dayofweek(sendtime) = 2 as 'Monday',
dayofweek(sendtime) = 3 as 'Tuesday',
dayofweek(sendtime) = 4 as 'Wednesday',
dayofweek(sendtime) = 5 as 'Thursday',
dayofweek(sendtime) = 6 as 'Friday',
dayofweek(sendtime) = 7 as 'Sabbath',
count(*) AS 'COUNT'
from chat
group by HOUR(sendtime)
我希望这些数据能够实现使用D3.js的可视化,这看起来像这样:
http://www.imagesup.net/?di=16141790283414
感谢。
答案 0 :(得分:0)
你非常接近,你只需要聚合功能:
select hour(sendtime) as `HOUR`,
sum(dayofweek(sendtime) = 1) as Sunday,
sum(dayofweek(sendtime) = 2) as Monday,
sum(dayofweek(sendtime) = 3) as Tuesday,
sum(dayofweek(sendtime) = 4) as Wednesday,
sum(dayofweek(sendtime) = 5) as Thursday,
sum(dayofweek(sendtime) = 6) as Friday,
sum(dayofweek(sendtime) = 7) as Sabbath,
count(*) AS 'COUNT'
from chat
group by HOUR(sendtime)
order by `hour`;
请注意,列别名周围不需要单引号。您应该只对字符串和日期常量使用单引号。