注意,如果所有类别的表中都缺少一个日期,则不会在所有类别的结果中显示为0。
我有log
表如下所示,我想为我的图表收集log
表,我想收集基于category
和date
的数据,向下浏览我的sql代码
<表类>
id
类别
日期
tbody><<tr>2 penghapusan 2021-08-24 08:23:24 3 penghapusan 2021-08-24 08:24:53 4penerimaan 2021-08-24 08:27:57 5penerimaan 2021-08-24 08:28:07 6penerimaan 2021-08-26 08:31:54 7penolakan 2021-08-24 08:34:27 8penolakan 2021-08-24 08:36:16 9 penolakan 2021-08-25 08:38:13 10penolakan 2021-08-25 08:40:00 11penolakan 2021-08-25 08:40:13 12 penolakan 2021-08-25 08:41:20 13pengiriman 2021-08-24 08:41:53 14penolakan 2021-08-24 08:42:13 15 pengiriman 2021-08-24 08:42:28 16 penerimaan 2021-08-26 08:42:35 17pengiriman 2021-08-25 08:43:00 18 penerimaan 2021-08-26 08:43:06 19 penerimaan 2021-08-27 08:43:06 20pengiriman 2021-08-25 08:43:31 21penolakan 2021-08-24 08:43:37 22 penolakan 2021-08-24 08:43:37 23 pengiriman 2021-08-26 08:44:06 24 penolakan 2021-08-24 08:44:15 25 penolakan 2021-08-24 08:44:15 26pengiriman 2021-08-26 08:47:36 27penolakan 2021-08-24 08:47:41 28pengiriman 2021-08-28 08:48:07 29penerimaan 2021-08-27 08:48:11 30 pengiriman 2021-08-28 08:48:16 31penerimaan 2021-08-27 08:48:20 32 penghapusan 2021-08-24 08:48:44 33pengubahan 2021-08-24 08:48:51 34 pengubahan 2021-08-24 08:49:01 35 penghapusan 2021-08-24 08:49:13 36penghapusan 2021-08-24 08:52:32 37pembuatan 2021-08-24 08:52:50 38pembuatan 2021-08-24 08:53:39 表类>
您需要将不同的类别与不同的日期进行CROSS
连接,然后将LEFT
连接到log
以聚合所有现有的日期:
SELECT c.category,
COUNT(l.id) total,
d.date
FROM (SELECT DISTINCT category FROM log) c
CROSS JOIN (SELECT DISTINCT DATE(date) date FROM log) d
LEFT JOIN log l ON l.category = c.category AND DATE(l.date) = d.date
GROUP BY c.category, d.date
ORDER BY c.category ASC
LIMIT 100;
注意,如果所有类别的表中都缺少一个日期,则不会在所有类别的结果中显示为0。