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

问题描述 投票:1回答:3

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

我为每个城市提供每种产品的产品和数量。请参阅下面的代码输出: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)
sql olap cube
3个回答
1
投票

恢复此主题,因为它是非常具体的谷歌搜索的最佳结果。这是我使用数据立方体查询格式的解决方案:

    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

这将以您可能在课堂上使用的格式查询多维数据集,然后根据城市为每个产品添加排名。祝你总决赛好运。


0
投票

派生表1 => SELECT CITY,MAX(QTY)派生表2 => SELECT CITY,PRODUCT,QTY链接CITY AND QTY并获取PRODUCT NAME。


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
© www.soinside.com 2019 - 2024. All rights reserved.