首页 > 解决方案 > 选择最昂贵产品销量最高的公司

问题描述

我有一张不同公司的许多产品的所有销售记录表。每条记录都包括售出的产品、售出的价格、售出公司的名称(请注意,可以以任何可能的价格售出相同的产品)。示例表结构:

id | product | sales_price | company
---+---------+-------------+---------
1  | prod122 | 123376456   | abcSales
2  | prod123 | 345676433   | xyzSales
3  | prod122 | 346876543   | xyzSales
4  | prod124 | 124688533   | wpwSales

我试图找出哪家公司的最昂贵产品的销售额最高。换句话说,我想写一个查询,找到平均价格最高的产品,调用它PRODUCTX,然后找到销售额最高的公司PRODUCTX,调用它COMPANYX

结果应该是一列显示一行COMPANYX,另一列显示 PRODUCTX 的销售数量。

非常感谢您的帮助。

标签: sqloracle

解决方案


你可以试试这个:

WITH DATAA (id,product,sales_price,company)
AS
(
SELECT 1, 'prod122', 123376456, 'abcSales' FROM DUAL UNION ALL
SELECT 2, 'prod123', 345676433, 'xyzSales' FROM DUAL UNION ALL
SELECT 3, 'prod122', 346876543, 'xyzSales' FROM DUAL UNION ALL
SELECT 4, 'prod124', 124688533, 'wpwSales' FROM DUAL
)
SELECT
    D.COMPANY,
    D.PRODUCT,
    T.AVG_PRICE,
    COUNT(1) NO_OF_PRODUCT
FROM
    DATAA D
    JOIN (
        SELECT
            AVG(SALES_PRICE) AVG_PRICE,
            PRODUCT
        FROM
            DATAA
        GROUP BY
            PRODUCT
        ORDER BY
            AVG_PRICE DESC
        FETCH FIRST ROWS ONLY
    ) T ON ( T.PRODUCT = D.PRODUCT )
GROUP BY
    D.COMPANY,
    D.PRODUCT,
    T.AVG_PRICE
ORDER BY
    NO_OF_PRODUCT DESC
FETCH FIRST ROWS ONLY;

输出

在此处输入图像描述


推荐阅读