Php 按日期和值分组
我在一个名为Php 按日期和值分组,php,mysql,Php,Mysql,我在一个名为articles的表中有4列:created_at、articles、keyword和category 我提出这个问题是为了分析数据: SELECT DATE(`created_at`) AS date, COUNT(1) AS articles FROM articles WHERE `keyword`='keyword1' GROUP BY DATE(`created_at`) 这将返回一个关键字每天的文章总数 我想要一个总数,然后将其分解,并将每个关键字的文章分类为ca
articles
的表中有4列:created_at、articles、keyword和category
我提出这个问题是为了分析数据:
SELECT DATE(`created_at`) AS date, COUNT(1) AS articles
FROM articles
WHERE `keyword`='keyword1'
GROUP BY DATE(`created_at`)
这将返回一个关键字每天的文章总数
我想要一个总数,然后将其分解,并将每个关键字的文章分类为cat1
、cat2
或cat3
。所以给一张这样的桌子:
|date|keyword|articles|cat1|cat2|cat3|
但我似乎无法正确处理这件事,因此任何帮助都将不胜感激 您在列中创建的
的数据类型是什么?您需要将日期时间
转换为日期
:)您好,我收到这个错误:#1064-您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以获得正确的语法,将第5行的near'case)用作Cat1Count,SUM(Category=Cat2时的case,然后是1 else 0 end case)用作Ca'再试一次。我已经修复了这个语句。添加到这个语句中,您可以简单地将(Category=“cat1”)相加为Cat1Count。这是因为MySQL中的所有布尔操作都返回0或1。将此结果相加可以计算列中的特定类别。这与上面的答案相同,但是SQL代码更少。非常感谢这项工作——我不得不删除“SUM(case)”之间的空格。再次感谢。
select
DATE(`created_at`),
keyword,
count(*) as TotalCount,
SUM (case when Category = Cat1 then 1 else 0 end) as Cat1Count,
SUM (case when Category = Cat2 then 1 else 0 end) as Cat2Count,
SUM (case when Category = Cat3 then 1 else 0 end) as Cat3Count
from articles
group by DATE(`created_at`), keyword
order by DATE(`created_at`), keyword