尝试在SQL OLAP多维数据集中查找不同的值

时间:2017-12-21 01:48:31

标签: sql olap cube

我试图找到这个问题的答案: 对于每个供应商城市,找到最大数量的产品?

我为每个城市提供每种产品的产品和数量请参阅下面的代码输出: enter image description here

以下是查询的代码:

SELECT [Supplier City], [Product Name], [Total Transactions Quantity]
FROM tb_final_cube
WHERE "Supplier Name" IS NULL
AND "Supplier City" IS NOT NULL
AND "Supplier State" IS NOT NULL
AND "Product Name" IS NOT NULL
AND "Product Packaging" IS NOT NULL
AND "Product Line" IS NULL
AND "Product Category" IS NULL

最后,这是我使用的多维数据集的代码:

SELECT DISTINCT s.name "Supplier Name",
                s.city "Supplier City",
                s.state "Supplier State",

                p.name "Product Name",
                p.product_category "Product Category",
                p.product_line "Product Line",
                p.product_packaging "Product Packaging",

                SUM(Quantity) "Total Transaction Quantity",
                SUM(Quantity * Price) "Total Sales Amount",
                MAX(Price) "Maximum Price",
                MIN(Price) "Minimum Price"
        INTO tb_final_cube
        FROM tb_supplier s, tb_product p tb_offers t
        WHERE s.supp_id=t.supp_id
        AND p.prod_id=t.prod_id
        GROUP BY CUBE ((s.Name, s.City, s.State), (p.Name, p.Product_Category, p.Product_Line)),
         ROLLUP (s.state, s.city, s.name),
         ROLLUP (p.Product_Packaging, p.Name),
         ROLLUP (p.Product_Category, p.Product_Line, p.Name)

3 个答案:

答案 0 :(得分:1)

恢复此线程,因为它是非常特定的google搜索的最佳结果。 这是我使用数据多维数据集查询格式的解决方案:

    SELECT [Supplier City], [Product Name], [Total Quantity] "Top Product"
FROM(
    SELECT  [Supplier City], [Product Name], [Total Quantity],DENSE_RANK() OVER (PARTITION BY [Supplier City] ORDER BY [Total Quantity] DESC) "rnk"
    FROM(       
            SELECT [Supplier City], [Product Name], [Total Quantity]
            FROM Tb_Final_Cube
            WHERE "Product Name" IS NOT NULL
            AND "Supplier City" IS NOT NULL
            AND "Supplier State" IS NOT NULL
            AND "Supplier Name" IS NULL
            GROUP BY [Supplier City], [Product Name], [Total Quantity]
            ) AS R
            ) AS T
WHERE rnk = 1

这将以您在课堂上使用的格式查询多维数据集,然后将排名附加到基于城市的每个产品上。祝您决赛顺利。

答案 1 :(得分:0)

派生表1 => SELECT CITY,MAX(QTY) 派生表2 =>选择城市,产品,数量 链接CITY AND QTY并获取PRODUCT NAME。

答案 2 :(得分:0)

SELECT DT1.city, DT2.product, DT2.qty
FROM (SELECT city, max(qty) as qty
      FROM arunslocal.tb_final_cube
      group by city) AS DT1, (SELECT city,qty, product
                              FROM arunslocal.tb_final_cube) AS DT2
WHERE DT1.city = DT2.city AND DT1.qty = DT2.qty
相关问题