我有一个像这样的表结构:
id:Bigint(11)
channel_id:Bigint(11)
server_id:Bigint(11)
created:timestamp
,我想获取一个表,该表显示每个channel_id在给定时间段(每个小时,因此从00:00-00:59和01:00-01:59等)中的条目数其中server_id为X(如果可能,还包括所有channel_id的总数)。而且我还需要它显示没有条目的时间段以及该时间段内没有消息的channel_id(所有channel_id在数据集中至少一次)
我能想到的最好的事情是
SELECT
DATE_FORMAT(
MIN(created),
'%d/%m/%Y %H:00:00'
) AS tmstamp,
COUNT(*) AS cnt
FROM
messages
GROUP BY ROUND(UNIX_TIMESTAMP(created) / 3600)
我找不到有关可变列数的任何信息(因为我不知道给定server_id有多少个不同的channel_id)
谢谢您的帮助。
编辑:删除了问题的时间部分,但是我的主要问题仍然存在。即使我以前都不知道如何将channel_ids作为列。