【问题标题】:Total and Subtotal总计和小计
【发布时间】:2016-05-11 15:21:54
【问题描述】:

问题。在 PRODUCT 和 ORDERLINE 表中列出已交付的所有产品的产品名称、交付数量以及销售价格的总和和小计。按产品名称升序排列。

我的代码:

SELECT
p.PRODNAME AS "PRODUCT NAME",
ol.QTYDELIVERED AS "QUANTITY DELIVERED",
ol.SALEPRICE AS "SALE PRICE" from ORDERLINE ol
INNER JOIN PRODUCT p ON
ol.PRODID = p.PRODID
ORDER BY p.PRODNAME ASC;

My current Result

Desired Result

【问题讨论】:

  • 请将数据发布为格式化文本

标签: oracle oracle-sqldeveloper


【解决方案1】:

你可以使用这个(使用CTE

with subtotal as
(
    SELECT p.PRODID, 
        p.PRODNAME AS "PRODUCT NAME",
        ol.QTYDELIVERED AS "QUANTITY DELIVERED",
        ol.SALEPRICE * ol.QTYDELIVERED AS "SALE PRICE" 
    from ORDERLINE ol
    INNER JOIN PRODUCT p 
    ON ol.PRODID = p.PRODID
    ORDER BY p.PRODNAME ASC
) 
select * 
from (select * from subtotal
      union all
      select PRODID, "PRODUCT NAME", sum("QUANTITY DELIVERED"), 
           sum("SALE PRICE")
      from subtotal
      group by PRODID, "PRODUCT NAME" 
     )
order by "PRODUCT NAME", PRODID, "QUANTITY DELIVERED";

您应该包含 PRODID 来计算分组中的总数,因为 PRODNAME 可能不是唯一的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多