gpt4 book ai didi

sql - 无法生成 SQL 查询

转载 作者:行者123 更新时间:2023-11-29 14:27:54 25 4
gpt4 key购买 nike

我有一个名为 Calls 的表,其中包含以下字段。

  • 身份证
  • 进入时间
  • ExitTime(这可以是 NULL,表示放弃调用)
  • 日期
  • 周(基于日期的月份)
  • 满意度得分(1-5)

我想创建一个 View ,按周对调用进行分组并显示以下列:

  • 每周总通话数
  • 每周放弃率(总调用数除以 ExitTime 为 NULL 的调用数)
  • 满意度得分低于每周 3 次的电话

我从这个定义开始:

CREATE VIEW TotalView AS select
Call.Week,
Count(ID) as TotalCalls
From
Call
GROUP BY
Call.Week;

Weeks 和 TotalCalls 正确显示。然后,我尝试计算满意度分数小于 3 的调用,但结果是错误的。我输入这个语句

...
select
Call.Week,
Count(ID) as TotalCalls,
Count(CallsLess) as CallsLess3

From
Call,
(select ID as CallsLess from Call where SatisfactionRate<3)

GROUP BY
Call.Week

...但是结果表是完全错误的,现在 TotalCalls 列甚至是错误的。

  1. 你能告诉我应该如何编写这个查询吗?
  2. 我特定月份的数据涵盖 5 周。我也可以将第 4 周和第 5 周组合在一起,以便在最终 View 中显示四行吗?

最佳答案

Postgres 支持 filter 子句,这使得条件聚合几乎友好:

select c.Week as call_week,
count(*) as total_calls,
count(*) filter (where c.exittime is null) as abandoned_calls,
avg( (c.exttime is null)::int ) as abandon_rate,
count(*) filter (where c.satisfaction < 3) as low_satisfaction
from call c
group by c.Week;

关于sql - 无法生成 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55787389/

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