gpt4 book ai didi

sql - 如何为以下结果创建 SQL 语句?

转载 作者:搜寻专家 更新时间:2023-10-30 22:24:40 24 4
gpt4 key购买 nike

我有一张包含以下内容的表格 -

Table

我正在尝试创建 4 列,如下所示 -

  • 风险
  • 风险计数
  • 收入
  • Revenue_Count

以下 SQL 查询为我提供了所需的 4 列,但它也会生成 NULL 值。

select CASE when "BUCKET"='High Revenue' OR "BUCKET"='Low Revenue' OR "BUCKET"='Medium Revenue' then BUCKET end as Revenue,
CASE when "BUCKET"='High Revenue' OR "BUCKET"='Low Revenue' OR "BUCKET"='Medium Revenue' then CUSTOMER_COUNT end as Revenue_count,
CASE when "BUCKET"='High Risk' OR "BUCKET"='Low Risk' OR "BUCKET"='Medium Risk' then BUCKET end as Risk,
CASE when "BUCKET"='High Risk' OR "BUCKET"='Low Risk' OR "BUCKET"='Medium Risk' then CUSTOMER_COUNT end as Risk_count
FROM "TABLE_NAME"

结果-

Output

如何删除 NULL 值并将结果放在一行中,以便理想情况下输出应包含 3 行 4 列。

问候

最佳答案

你想要 SUM()MAX():

select MAX(CASE when "BUCKET"='High Revenue' OR "BUCKET"='Low Revenue' OR "BUCKET"='Medium Revenue' then BUCKET end) as Revenue,
MAX(CASE when "BUCKET"='High Revenue' OR "BUCKET"='Low Revenue' OR "BUCKET"='Medium Revenue' then CUSTOMER_COUNT end) as Revenue_count,
MAX(CASE when "BUCKET"='High Risk' OR "BUCKET"='Low Risk' OR "BUCKET"='Medium Risk' then BUCKET end) as Risk,
MAX(CASE when "BUCKET"='High Risk' OR "BUCKET"='Low Risk' OR "BUCKET"='Medium Risk') then CUSTOMER_COUNT end as Risk_count
FROM "TABLE_NAME"

然后您可以使用INLIKE 来简化逻辑:

select max(case when "BUCKET" in ('High Revenue', 'Low Revenue', 'Medium Revenue') then BUCKET end) as Revenue,
max(case when "BUCKET" in ('High Revenue', 'Low Revenue', 'Medium Revenue') then CUSTOMER_COUNT end) as Revenue_count,
max(case when "BUCKET" in ('High Risk', 'Low Risk', 'Medium Risk') then BUCKET end) as Risk,
max(case when "BUCKET" in ('High Risk', 'Low Risk', 'Medium Risk') then CUSTOMER_COUNT end as Risk_count
FROM "TABLE_NAME";

我还建议您去掉标识符周围的双引号。仅在确实需要时引用标识符,然后选择不需要引用的标识符(例如您拥有的标识符)。

编辑:

我想你想要:

select max(case when bucket like '%Revenue' then BUCKET end) as Revenue,
max(case when bucket like '%Revenue' then CUSTOMER_COUNT end) as Revenue_count,
max(case when bucket like '%Risk' then BUCKET end) as Risk,
max(case when bucket like '%Risk' then CUSTOMER_COUNT end) as Risk_count
FROM "TABLE_NAME"
GROUP BY LEFT(bucket, 3) -- sufficient to distinct high/medium/low

关于sql - 如何为以下结果创建 SQL 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54959974/

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