You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL同一查询实现Count、Avg等多统计需求可行性问询

问题解答

完全可行,用单个Oracle SQL查询就能实现所有需求,以下是具体实现代码:

SELECT
    PATIENT_ID,
    MAX(Session_Date) AS last_session_date,
    AVG(TRUNC(PATIENT_Paid_Date) - TRUNC(Session_Date)) AS avg_days_between_pay_and_session,
    MAX(Amount) AS max_amount,
    COUNT(CASE WHEN Session_Status = 'Completed' THEN 1 END) AS completed_session_count
FROM PATIENT_SESSIONS
GROUP BY PATIENT_ID;

代码说明:

  • MAX(Session_Date):直接提取每个患者的最晚会话日期,也就是最后一次session的日期。
  • AVG(TRUNC(PATIENT_Paid_Date) - TRUNC(Session_Date)):通过TRUNC截断日期的时间部分(如果字段包含时间的话),计算付款日期与会话日期的天数差后取平均值;若日期字段不带时间,可直接去掉TRUNC进行日期相减。
  • MAX(Amount):获取每个患者所有会话中的最高金额。
  • COUNT(CASE WHEN Session_Status = 'Completed' THEN 1 END):通过条件计数统计状态为Completed的会话数量,不符合条件的记录会返回NULL,而COUNT函数会自动忽略NULL值,刚好满足需求。

内容的提问来源于stack exchange,提问作者user13768246

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 23:54:06