gpt4 book ai didi

sql - 在Oracle中,如何在聚合所有行时选择特定行

转载 作者:行者123 更新时间:2023-12-01 16:20:51 26 4
gpt4 key购买 nike

我有一个要求,我需要按 id 聚合所有行,并在具有相同 id 的行中找到 1 个特定行。这就像 2 个 SQL 查询,但我想用 1 个 SQL 查询来实现。我正在使用Oracle数据库。例如,表 t1 的数据如下:

id   |  name  | num
----- -------- -------
1 | 'a' | 1
2 | 'b' | 3
2 | 'c' | 6
2 | 'd' | 6

我想按 id 聚合数据,找到“count”最高的“name”,并将该 id 的所有计数加起来为“total_count”。有 2 行具有相同的 num,选择第一行。

id   | highest_num | name_of_highest_num |  total_num |  avg_num 
----- ------------- --------------------- ------------ -------------------
1 | 1 | 'a' | 1 | 1
2 | 6 | 'c' | 15 | 5

我可以通过 1 个 Oracle SQL 查询得到这个结果吗?预先感谢您的回复。

最佳答案

Oracle 设置:

CREATE TABLE table_name ( id, name, num ) AS
SELECT 1, 'a', 1 FROM DUAL UNION ALL
SELECT 2, 'b', 3 FROM DUAL UNION ALL
SELECT 2, 'c', 6 FROM DUAL UNION ALL
SELECT 2, 'd', 6 FROM DUAL;

查询:

SELECT id,
MAX( num ) AS highest_num,
MAX( name ) KEEP ( DENSE_RANK LAST ORDER BY num ) AS name_of_highest_num,
SUM( num ) AS total_num,
AVG( num ) AS avg_num
FROM table_name
GROUP BY id

输出:

ID HIGHEST_NUM NAME_OF_HIGHEST_NUM TOTAL_NUM AVG_NUM
-- ----------- ------------------- --------- -------
1 1 a 1 1
2 6 d 15 5

关于sql - 在Oracle中,如何在聚合所有行时选择特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39927025/

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