gpt4 book ai didi

mysql - 同一列上的多个 where 子句

转载 作者:行者123 更新时间:2023-11-29 08:12:13 25 4
gpt4 key购买 nike

嗨,我终于弄清楚了如何在单行中获取结果,但我一直坚持获得正确的结果。

以下是我的查询。我正在尝试获取一个月内报告的故障数和完成的故障数。当我将 dateFormat(date_reported 更改为 dateFormat(date_completed) 时,数字会发生变化,从报告到完成交替。

select
count(r.rpt) as Reported,
count(c.cpt) as Completed,
DATE_FORMAT(DATE_REPORTED,'%M %Y') as MONTH

from
(select COUNT(faultid) as cpt
from fault_info
where status = 'Completed'
and date_completed >= LAST_DAY(NOW()) - INTERVAL 6 MONTH + INTERVAL 1 DAY
) c,
(select COUNT(faultid) as rpt
from fault_info
where status != 'Completed'
and date_reported >= LAST_DAY(NOW()) - INTERVAL 6 MONTH + INTERVAL 1 DAY
) r,
fault_info

GROUP BY MONTH

ORDER BY date_reported desc

任何帮助将不胜感激!!

这是我想要的输出。但目前我只是得到两列相同的数字。如上所述,要更改数字,我更改了 DateFormat(date_reported -> DateFormat(date_completed),但数字仍然保持不变。它们对于一个是正确的,但对于另一个则不是。

选择日期格式(报告日期...

已报告,已完成,月

“99”、“99”、“2014 年 1 月”

“72”、“72”、“2013 年 12 月”

“71”、“71”、“2013 年 11 月”

“107”、“107”、“2013 年 10 月”

“114”、“114”、“2013 年 9 月”

“112”、“112”、“2013 年 8 月”

或选择日期格式(date_completed...

已报告,已完成,月

“68”、“68”、“2014 年 1 月”

“65”、“65”、“2013 年 12 月”

“76”、“76”、“2013 年 11 月”

“113”、“113”、“2013 年 10 月”

“124”、“124”、“2013 年 9 月”

“140”、“140”、“2013 年 8 月”

这样我就可以进行百分比比较,我可以看到我们是否关闭了更多打开的故障。所以我需要一个月的实际报告与一个月的实际关闭情况。

最佳答案

稍微重组,您应该能够在单次传递和多次传递中完成

SELECT
DATE_FORMAT(DATE_REPORTED,'%M %Y') as MONTH,
SUM( status = 'Completed' ) as Completed,
SUM( status != 'Completed' ) as StillOpen
from
fault_info
group by
DATE_FORMAT(DATE_REPORTED,'%M %Y'),
order by
YEAR( DATE_REPORTED ) desc,
MONTH( DATE_REPORTED ) desc

当 true 时,逻辑表达式(例如 status = 'Completed' )的总和等于 1,否则等于 0。因此,通过查询行,您可以通过聚合获得单个组的可能计数,并且仍然按降序排列它们日期(年/月)基于从顶部到历史值的最新数据。

关于mysql - 同一列上的多个 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21350055/

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