首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不同条件下选择同一列

如何在不同条件下选择同一列
EN

Stack Overflow用户
提问于 2019-10-14 08:43:52
回答 1查看 686关注 0票数 2

我有一个包含以下列的表table1

(varchar)

  • surface (float8)

  • decision (Bool)

我希望为decisionTrueFalse的情况选择True,并按区域对结果进行分组。

最后,我想要3列:

判定为真的

  • region
  • the平均曲面
  • 判定为假

的曲面的平均曲面

我试过:

代码语言:javascript
复制
SELECT 
    region,
    (SELECT AVG(surface_m2) FROM table1 WHERE avis_final_bri),
    (SELECT AVG(surface_m2) FROM table1 WHERE avis_final_bri)
FROM
    table1
GROUP BY 
    region

但是查询不起作用。

我还试图定义另一个表WITH语句,但它没有工作。我试过用JOIN,但也失败了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-14 08:46:23

您可以使用FILTER子句:

demo:db<>fiddle

代码语言:javascript
复制
SELECT
    region,
    AVG(surface) FILTER (WHERE decision = true),
    AVG(surface) FILTER (WHERE decision = false)
FROM
    table1
GROUP BY region

或者,要使用更常见的SQL,可以使用CASE子句:

代码语言:javascript
复制
SELECT
    region,
    AVG(CASE WHEN decision = true THEN surface END),
    AVG(CASE WHEN decision = false THEN surface END)
FROM
    table1
GROUP BY region
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58373028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档