gpt4 book ai didi

sql - 如何通过 group by 和子查询计算来选择数据?

转载 作者:行者123 更新时间:2023-12-02 16:00:53 26 4
gpt4 key购买 nike

我有两个表:列表表:

<表类="s-表"><头>id名字<正文>1一个2b3c

vt_表:

<表类="s-表"><头>idlist_id数量direction_id<正文>11201211223115142231512016120271181

我需要这个结果:金额 (dir_id = 1 - dir_id = 2), list_id

<表类="s-表"><头>数量list_id<正文>41123203

金额是所有amount 的总和表 vt_table 中的字段,其中 direction_id = 1 减去所有 amount 的总和表 vt_table 中的字段,其中 direction_id = 2

我需要按 list_id 对这些计算进行分组, 如果表中没有带 list_id 的行3,例如,金额必须是0 .

我正在尝试用这个查询来做:

SELECT vt.list_id
, ((SELECT COALESCE(SUM(vt.amount), 0)
FROM table_name vt
WHERE vt.direction_id = 1)
-
(SELECT COALESCE(SUM(vt.amount), 0)
FROM table_name vt
WHERE direction_id = 2)) AS result
FROM table_name vt
GROUP BY vt.list_id

但我不知道如何正确地对其进行分组并进行分组,以便如果没有某些 list_id 的条目, 则金额为 0为此list_id .

我使用 PostgreSQL 12。

Here the examples

最佳答案

您可以尝试将 OUTER JOINCOALESCE 函数结合使用。

查询 1:

SELECT l.id, 
SUM(COALESCE(CASE WHEN vt.direction_id = 1 THEN vt.amount END,0)) -
SUM(COALESCE(CASE WHEN vt.direction_id = 2 THEN vt.amount END,0)) AS result
FROM table_name vt
RIGHT JOIN list l ON vt.list_id = l.id
GROUP BY l.id
ORDER BY l.id

Results :

| id | result |
|----|--------|
| 1 | 41 |
| 2 | 23 |
| 3 | 0 |

关于sql - 如何通过 group by 和子查询计算来选择数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70743689/

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