【发布时间】:2021-01-31 16:39:15
【问题描述】:
我尝试根据我的表格数据计算平均持续时间(天)。在这张表中,我有三列:
- audit_process_completed(这是结束日期/格式:YYYY-MM-DD)
- audit_decision_date(这是开始日期/格式:YYYY-MM-DD)
- audit_created(如果 'audit_decision_date' (2.) = '0000-00-00',这是替代开始日期
我现在想计算 1 到 2 天(如果不是 '0000-00-00')或 3 天(如果 2. 是 '0000-00-00')之间的时间差。在启动AVG(DATEDIFF) 之前,我尝试使用 SQL CASE 定义正确的开始日期。请检查尝试。我无法为此找到正确的解决方案。
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 |
期望的输出: 整个表的平均持续时间(以天为单位)。
【问题讨论】:
-
(1) 提供样本数据和期望的结果。 (2) 标记您正在使用的数据库。
-
我添加了一些示例数据。我不确定您对数据库标签的含义。数据都在同一个表中。问题是:我可以使用“audit_created”日期进行 DATE(DIFF 没有任何问题。但如果它可用,我想使用“decision_date”。
标签: sql case datediff duration