繁体   English   中英

如何添加列总计以查看

[英]How to add column totals to view

我正在为业务报告构造一个SQL查询(使用MySQL)。 我想做的是创建一个如下表:

Product | Quantity | Price | Total
widget1 |    3     |  1.00 | 3.00
widget1 |    1     |  1.00 | 1.00
widget1 |    2     |  1.00 | 2.00
widget1 |    3     |  1.00 | 3.00
Total   |    9     |  1.00 | 9.00

我可以编写查询以输出除表的最后一行以外的所有内容。 这可能吗? 如果是这样,将如何实施?

我用以下查询尝试了以下一些答案,但不起作用。 我一定缺少基本的东西。

SELECT uc_order_products.nid AS nid,
  uc_orders.order_id AS 'order_id',
  first_name.value AS 'firstname', 
  last_name.value AS 'lastname',
  uc_order_products.title AS 'program',
  uc_order_products.qty AS 'quantity',
  uc_order_products.price AS 'price',
  (uc_order_products.qty * uc_order_products.price) AS 'total',
  sum(uc_order_products.qty) AS 'total quantity',
  sum(uc_order_products.qty * uc_order_products.price) AS 'total revenue'
FROM profile_values first_name
INNER JOIN profile_values last_name ON first_name.uid = last_name.uid
LEFT JOIN uc_orders uc_orders ON uc_orders.uid = first_name.uid
LEFT JOIN uc_order_products uc_order_products ON uc_orders.order_id = uc_order_products.order_id
WHERE uc_orders.order_status IN ('completed') 
  AND first_name.fid =5 
  AND last_name.fid =6 
  AND COALESCE(:nid,nid) = nid
GROUP BY uc_order_products.nid WITH ROLLUP

我怀疑无法在创建报表的查询中使用分组汇总。 如何包装查询以产生所需的结果?

谢谢

尝试这个:

SELECT
    product,
    COUNT(product) AS quantity,
    SUM(price) price
FROM product
GROUP BY product WITH ROLLUP

我对此做了一些尝试,主要是因为我没有听说过WITH ROLLUP(感谢biziclop),所以我想尝试一下。

CREATE TABLE test.MyTable( 
    product TEXT(10), 
    quantity NUMERIC, 
    price NUMERIC 
);

INSERT INTO MyTable VALUES
    ("widget1", 3, 1),
    ("widget1", 1, 1),
    ("widget1", 2, 1),
    ("widget1", 3, 1),
;



SELECT 
    Product,
    Quantity,
    Price,
    Total
FROM
    (
    SELECT
        rownum,
        COALESCE(Product, 'Total') AS Product, 
        Quantity,
        Price,
        (Quantity * Price) AS Total
    FROM    
        (
        SELECT
            @rownum:=@rownum+1 rownum,   
            Product,
            SUM(Quantity) AS Quantity,
            Price AS Price

        FROM
            MyTable,
            (SELECT @rownum:=0) r
        GROUP BY
            product, rownum
        WITH ROLLUP 
        )
        AS myalias
    ) AS myalias2
WHERE rownum IS NOT NULL
OR Product = 'Total'

输出:

在此处输入图片说明

我现在正在放弃,但是我很期待看到专业人士的表现!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM