mysql 为SQL分组数据

31moq8wy  于 2022-11-21  发布在  Mysql
关注(0)|答案(2)|浏览(136)

https://i.stack.imgur.com/0yDsf.png
| 年份|月份|人数|平均值|
| - -|- -|- -|- -|
| 二OO五年|一个|总体情况|八个|
| 二OO五年|2个|总体情况|5.0版本|
| 二OO五年|三个|总体情况|二点七|
| 二OO五年|四个|总体情况|第4.1条|
| 二OO五年|五个|总体情况|六点八分|
| 二OO五年|六个|总体情况|第5.2条|
| 二OO五年|七个|总体情况|四点七|
| 二OO五年|八个|总体情况|四、四|
| 二OO五年|九个|总体情况|3.8分|
| 二OO五年|10个|总体情况|七个|
| 二OO五年|十一|总体情况|四点九|
| 二OO五年|十二|总体情况|六点五|
我的问题主要在于计算三个月的平均值(123、456等),并将此新值显示为Q1/2/3/4的季度平均值(表示“季度")。
| 年份|季度|人数|平均值|
| - -|- -|- -|- -|
| 二OO五年|第一季度|总体情况|xxx|
| 二OO五年|二季度|总体情况|xxx|
不知道如何开始这个查询,以及如何将月份分组为季度。任何感谢都将非常感激!

4sup72z8

4sup72z81#

第一个
| 年份|季度|季度平均值|
| - -|- -|- -|
| 二OO五年|第一季度|八十九点三万|
| 二OO五年|二季度|八千八百万|
| 二OO五年|第三季度|八十七点二六六六七|
| 二OO五年|第四季度|八十六点七六六六七|
fiddle

nom7f22z

nom7f22z2#

如果该表中有date列,则可以直接使用MySQL QUARTER()函数。但是,这将返回1-4而不是Q1-Q4。如果没有日期列,则可以将yearmonth列组合起来,再加上一个01表示“day”值,使用DATE_FORMAT使其可识别为日期,并在其上使用QUARTER()

SELECT `year`,
       QUARTER(DATE_FORMAT(CONCAT_WS('-',`year`,`month`,'01'), '%Y-%m-%d')) 
       AS Quarter,
      sub_housing_type,
      AVG(`avg`) AS Average
FROM mytable
GROUP BY `year`, Quarter, sub_housing_type

Demo fiddle

相关问题