将SQL查询分组到季度结果中

时间:2017-12-19 17:10:09

标签: mysql sql

我试图将一组结果分组到季度年度结果中。到目前为止,我已设法提出此查询,按月显示观看次数:

SELECT DATE_FORMAT(post_date, '%b-%y') AS Month, SUM(views) AS Views
FROM $table
WHERE `property_id` = $property_id
GROUP BY DATE_FORMAT(post_date, '%b-%y')
ORDER BY `post_date` ASC

...这给了我以下数据:

Month   Views
Jan-16  331
Feb-16  390
Mar-16  431
Apr-16  430
May-16  364
Jun-16  360
Jul-16  459
Aug-16  356
Sep-16  530
Oct-16  435
Nov-16  376
Dec-16  362

我不确定如何对它们进行分组,以便包含三个月的内容计算该季度末的观看次数和输出值。例如,使用上面的数据:

Month   Views
Mar-16  1152
Jun-16  1154
Sep-16  1345
Dec-16  1173

感谢任何建议,谢谢。

更新 感谢Thorsten Kettner解决这个问题。我还在下面添加了他的解决方案,以获得我需要的月 - 年格式列:

SELECT DATE_FORMAT(MAX(post_date), '%b-%y') AS Month, QUARTER(post_date), SUM(views) AS Views
FROM $table
WHERE property_id = $property_id
GROUP BY YEAR(post_date), QUARTER(post_date) 
ORDER BY YEAR(post_date), QUARTER(post_date)

1 个答案:

答案 0 :(得分:2)

<击> 季度可以使用月份编号的整数除法计算:

SELECT YEAR(post_date), (MONTH(post_date) - 1) DIV 3 + 1 as quarter, SUM(views) AS Views
FROM $table
WHERE property_id = $property_id
GROUP BY YEAR(post_date), (MONTH(post_date) - 1) DIV 3 + 1
ORDER BY YEAR(post_date), (MONTH(post_date) - 1) DIV 3 + 1;

<击>

正如M Khalid Junaid所说:对此有一个函数QUARTER

SELECT YEAR(post_date), QUARTER(post_date), SUM(views) AS Views
FROM $table
WHERE property_id = $property_id
GROUP BY YEAR(post_date), QUARTER(post_date) 
ORDER BY YEAR(post_date), QUARTER(post_date);