gpt4 book ai didi

mysql - 计算一年中每个月的三个级别(L1,L2,L3)列和状态 P 的行数

转载 作者:行者123 更新时间:2023-11-28 23:21:59 26 4
gpt4 key购买 nike

我有一个像 t enter image description here 这样的表他的 table :

所以我想计算三个级别(L1、L2、L3)的行数作为列,一年中每个月的状态为 P。

我正在解决单个查询。

SELECT year(date) as year, date as month, (SELECT COUNT(level_id)) as L1 FROM attendance WHERE level_id = 'L1' AND status = 'P' AND year(date) = '2016' 按日期分组

我想要一张这样的 table :

enter image description here

最佳答案

以下查询应该会为您提供所需的结果。只需使用条件聚合和 GROUP BY 来计算给定年份和月份每种级别出现的次数。

SELECT YEAR(date) AS year,
MONTH(date) AS month,
SUM(CASE WHEN level_id = 'L1' THEN 1 ELSE 0 END) AS L1,
SUM(CASE WHEN level_id = 'L2' THEN 1 ELSE 0 END) AS L2,
SUM(CASE WHEN level_id = 'L3' THEN 1 ELSE 0 END) AS L3
FROM yourTable
WHERE status = 'P' AND
YEAR(date) = 2016
GROUP BY YEAR(date),
MONTH(date)

作为供将来引用的提示,如果您想避免按两个单独的列排序,您也可以使用这个:

GROUP BY DATE_FORMAT(date, '%Y-%m')

这将为您提供一个包含年份和月份的列,并可能使您的查询不那么冗长。

关于mysql - 计算一年中每个月的三个级别(L1,L2,L3)列和状态 P 的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41161509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com