gpt4 book ai didi

sql - SELECT 语句以获取带有列标题的分组列的总和

转载 作者:行者123 更新时间:2023-11-29 13:57:49 25 4
gpt4 key购买 nike

表格数据:

NAME     RS
A 10
A 20
A 30
B 15
B 5
B 10
C 70
C 30

预期输出:

A   -- column name
10
20
30
60 -- total of A

B
15
5
10
30 -- total of B

C
70
30
100 -- total of C

到目前为止我已经尝试过:

  1. 联合所有
  2. 选择所有数据并使用前端进行操作。

没有 UNION ALL 还有其他最简单的解决方案吗?

最佳答案

使用纯 SQL 在单个查询中执行此操作:

SELECT unnest(arr)
FROM (
SELECT ARRAY[name] || array_agg(rs::text) || sum(rs)::text AS arr
FROM tbl
GROUP BY name
) sub
ORDER BY arr[1];

类似于@WingedPanther已发布,但对于任何名称都是干净和安全的。

返回:

A
10
20
30
60
B
15
15
C
70
30
100

或者:

WITH cte AS (
SELECT name, sum(RS)::text AS sum_rs
FROM tbl
GROUP BY 1
)
SELECT unicol
FROM (
SELECT name AS unicol, name AS order1, 1 AS order2 FROM cte
UNION ALL
SELECT sum_rs, name, 2 FROM cte
) sub
ORDER BY order1, order2;

返回:

A
60
B
15
C
100

SQL Fiddle.

或者只发送 CTE 的结果,剩下的交给您的客户。

关于sql - SELECT 语句以获取带有列标题的分组列的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28065481/

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