Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何分组_Sql_Oracle - Fatal编程技术网

Sql 如何分组

Sql 如何分组,sql,oracle,Sql,Oracle,我有下表: 我想得到三组年龄的总和(A和B|C和D|E和F) 我该怎么做 WITH sample_data AS (SELECT 1 AS id, 10 AS age, 11 AS name, 'A' AS type FROM dual UNION ALL SELECT 2, 0, 1, 'B' FROM dual UNION ALL SELECT 3, 9, 11, 'C' FROM dual UNION ALL SELECT 4, 10, 11, 'D' FRO

我有下表:

我想得到三组年龄的总和(AB|CD|EF

我该怎么做

WITH sample_data AS
  (SELECT 1 AS id, 10 AS age, 11 AS name, 'A' AS type FROM dual
  UNION ALL
  SELECT 2, 0, 1, 'B' FROM dual
  UNION ALL
  SELECT 3, 9, 11, 'C' FROM dual
  UNION ALL
  SELECT 4, 10, 11, 'D' FROM dual
  UNION ALL
  SELECT 5, 10, 11, 'E' FROM dual
  UNION ALL
  SELECT 6, 10, 11, 'F' FROM dual
  )
SELECT listagg(type,',') within GROUP (
ORDER BY type) types,
  SUM(age)
FROM sample_data
GROUP BY DECODE(type,'A',1,'B',1,'C',2,'D',2,3)
结果

types    sum(age)
A,B        10
C,D        19
E,F        20

以下内容应为您提供所需内容:

SELECT CASE
         WHEN TYPE IN ('A', 'B') THEN 'AB'
         WHEN TYPE IN ('C', 'D') THEN 'CD'
         WHEN TYPE IN ('E', 'f') THEN 'Ef'
       END AS KIND,
       SUM(AGE) AS TOTAL_AGES
  FROM WHATEVER_TABLE
  GROUP BY CASE
             WHEN TYPE IN ('A', 'B') THEN 'AB'
             WHEN TYPE IN ('C', 'D') THEN 'CD'
             WHEN TYPE IN ('E', 'f') THEN 'Ef'
           END;

布雷,你的问题是什么?小组在哪里?@Eugene A和B | C和D | E和F。