Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.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
汇总-Oracle数据库sql_Sql_Oracle_Group By_Oracle11g - Fatal编程技术网

汇总-Oracle数据库sql

汇总-Oracle数据库sql,sql,oracle,group-by,oracle11g,Sql,Oracle,Group By,Oracle11g,我有下表 我想根据下面的屏幕截图聚合和汇总要显示的数据 我该怎么做,是否可以这样做 您可以使用汇总,然后使用必要的条件忽略额外生成的行,如下所示: SQL> -- Sample data SQL> WITH DATAA (FRUIT, TYPE, AMOUNT, PERCENT) AS 2 ( 3 SELECT 'Apple', 'Green', 10017, 17 FROM DUAL UNION ALL 4 SELECT 'Orange', 'Green', 1

我有下表

我想根据下面的屏幕截图聚合和汇总要显示的数据

我该怎么做,是否可以这样做


您可以使用
汇总
,然后使用必要的条件忽略额外生成的行,如下所示:

SQL> -- Sample data
SQL> WITH DATAA (FRUIT, TYPE, AMOUNT, PERCENT) AS
  2  (
  3  SELECT 'Apple', 'Green', 10017, 17 FROM DUAL UNION ALL
  4  SELECT 'Orange', 'Green', 10016, 16 FROM DUAL UNION ALL
  5  SELECT 'Papaya', 'Yellow', 10014, 14 FROM DUAL UNION ALL
  6  SELECT 'Papaya', 'Blue', 10005, 5 FROM DUAL UNION ALL
  7  SELECT 'Papaya', 'Green', 10012, 12 FROM DUAL
  8  )
  9  -- Your query starts from here
 10  SELECT *
 11  FROM (
 12          SELECT FRUIT, TYPE, AMOUNT, SUM(PERCENT) AS PERCENT
 13            FROM DATAA
 14          GROUP BY ROLLUP(FRUIT, TYPE, AMOUNT)
 15       )
 16  WHERE ( FRUIT IS NOT NULL AND TYPE IS NOT NULL AND AMOUNT IS NOT NULL )
 17      OR ( FRUIT IS NOT NULL AND TYPE IS NULL AND AMOUNT IS NULL )
 18  ORDER BY FRUIT, TYPE DESC NULLS LAST;

FRUIT  TYPE       AMOUNT    PERCENT
------ ------ ---------- ----------
Apple  Green       10017         17
Apple                            17
Orange Green       10016         16
Orange                           16
Papaya Yellow      10014         14
Papaya Green       10012         12
Papaya Blue        10005          5
Papaya                           31

8 rows selected.

SQL>

我将使用
分组集

select fruit, type, sum(amount), sum(percent)
from t
group by grouping sets ( (fruit, type), (fruit) );