微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有 AVG(DATEDIFF) 和 CASE 的 SQL 查询

如何解决带有 AVG(DATEDIFF) 和 CASE 的 SQL 查询

我尝试根据我的表格数据计算平均持续时间(天)。在这个表中,我有三列:

  1. audit_process_completed(这是结束日期/格式:YYYY-MM-DD)
  2. audit_decision_date(这是开始日期/格式:YYYY-MM-DD)
  3. audit_created(如果 'audit_decision_date' (2.) = '0000-00-00',则这是替代开始日期

我现在想计算 1 到 2(如果不是 '0000-00-00')或 3(如果 2. 是 '0000-00-00')之间的天时差。在开始 CASE 之前,我尝试使用 sql AVG(DATEDIFF) 定义正确的开始日期。请检查尝试。我无法为此找到正确的解决方案。

SELECT audit_created,audit_decision_date,audit_process_completed
CASE audit_decision_date WHEN '0000-00-00' THEN audit_created ELSE audit_decision_date END AS start_date
(SELECT AVG(DATEDIFF (audit_process_completed,start_date)) AS duration 
FROM audit WHERE general_audit_status = 'Abgeschlossen' AND assigned_auditor = 2

样本数据:

id audit_process_completed audit_decision_date audit_created
1 2021-01-22 2021-01-17 2021-01-17
2 2021-01-27 0000-00-00 2021-01-20
3 2021-01-28 0000-00-00 2021-01-22
4 2021-02-01 2021-01-30 2021-01-24

期望的输出 整个表格的平均持续时间(以天为单位)。

解决方法

假设您使用的是 MySQL,您似乎需要 caseavg() 逻辑:

select avg(datediff( audit_process_completed,(case when audit_decision_date <> '0000-00-00' then audit_decision_date else audit_created end)
                   )
          )
from audit 
where general_audit_status = 'Abgeschlossen' and
      assigned_auditor = 2

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。