Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按日期和值分组_Php_Mysql - Fatal编程技术网

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