oracle11g - 如何将子查询结果合并到每行另一个子查询的结果?
问题描述
我正在努力寻找一种方法来获得我想要的输出。这是让我很难的子查询。需要一些帮助。
TABLE: Sales
DATE INVOICE# AMT TYPE
01-DEC-20 10001 50.00 TAKEAWAY
01-DEC-20 10002 50.00 DELIVERY
01-DEC-20 10003 50.00 DINEIN
01-DEC-20 10004 50.00 TAKEAWAY
01-DEC-20 10005 50.00 DELIVERY
01-DEC-20 10006 50.00 DINEIN
02-DEC-20 10001 100.00 TAKEAWAY
02-DEC-20 10002 100.00 DELIVERY
02-DEC-20 10003 100.00 DINEIN
02-DEC-20 10004 100.00 TAKEAWAY
02-DEC-20 10005 100.00 DELIVERY
02-DEC-20 10006 100.00 DINEIN
以下是我想要的输出报告。
DATE TOTAL_SALES TYPE SUBTOTAL_TYPE PERC(SUBTOTAL / TOTAL)
01-DEC-20 300 TAKEAWAY 100 33.3%
01-DEC-20 300 DELIVERY 100 33.3%
01-DEC-20 300 DINEINE 100 33.3%
02-DEC-20 600 TAKEAWAY 200 33.3%
02-DEC-20 600 DELIVERY 200 33.3%
02-DEC-20 600 DINEIN 200 33.3%
所以基本上,我正在努力解决的是 TOTAL_SALES 列。
解决方案
这对我有用 - 我在 18.1 db 上进行了测试,但我相信这个功能已经在 11g 中
WITH test_data(dt, invoice, amt, type)
AS
(
SELECT '01-DEC-20', '10001' ,50 ,'TAKEAWAY' FROM DUAL UNION ALL
SELECT '01-DEC-20', '10002' ,50 ,'DELIVERY' FROM DUAL UNION ALL
SELECT '01-DEC-20', '10003' ,50 ,'DINEIN' FROM DUAL UNION ALL
SELECT '01-DEC-20', '10004' ,50 ,'TAKEAWAY' FROM DUAL UNION ALL
SELECT '01-DEC-20', '10005' ,50 ,'DELIVERY' FROM DUAL UNION ALL
SELECT '01-DEC-20', '10006' ,50 ,'DINEIN' FROM DUAL UNION ALL
SELECT '02-DEC-20', '10001' ,100 ,'TAKEAWAY' FROM DUAL UNION ALL
SELECT '02-DEC-20', '10002' ,100 ,'DELIVERY' FROM DUAL UNION ALL
SELECT '02-DEC-20', '10003' ,100 ,'DINEIN' FROM DUAL UNION ALL
SELECT '02-DEC-20', '10004' ,100 ,'TAKEAWAY' FROM DUAL UNION ALL
SELECT '02-DEC-20', '10005' ,100 ,'DELIVERY' FROM DUAL UNION ALL
SELECT '02-DEC-20', '10006' ,100 ,'DINEIN' FROM DUAL
)
SELECT
distinct dt,
SUM(AMT) OVER (PARTITION BY dt) as total_sales,
type,
SUM(AMT) OVER (PARTITION BY dt,type) as subtotal_type,
to_char(SUM(AMT) OVER (PARTITION BY dt,type)/SUM(AMT) OVER (PARTITION BY dt)*100,'990.00')||'%'
FROM test_data
ORDER BY dt;
推荐阅读
- java - 将根元素添加到每个 XML 时如何将 POJO 编组为 XML
- javascript - 如何从我的 JSP 中的 If 条件调用 Javascript 函数?
- wordpress - 按图像名称检索图像 id - WORDPRESS REST API
- visual-studio-code - 如何在 VSCode 中找出选择的语言
- kotlin - 如何协调单例模式与接口回调?- 科特林
- python - numpy快速索引搜索
- arrays - 数组和哈希表的简洁输出格式
- javascript - 多层的 Openlayers 指针移动(悬停)工具提示
- bash - 查找一段时间后修改的目录中所有文件的总大小
- node.js - 请求值未定义