MySQL WITH AS用法

winterSky 2024-04-26 PM 2040℃ 2条
  1. 首先,确定哪个国家的销售金额最高。
  2. 然后,计算出这个国家销售金额的30%和40%的值。
  3. 最后,找出其它国家的销售金额介于这两个值之间的记录。
WITH CountrySales AS (
    SELECT S.Country, SUM(P.Price) AS Money
    FROM OrderDetails AS D
    LEFT JOIN Orders AS O ON D.OrderID = O.OrderID
    LEFT JOIN Products AS P ON P.ProductID = D.ProductID
    LEFT JOIN Suppliers AS S ON S.SupplierID = P.SupplierID
    GROUP BY S.Country
)
SELECT Country, Money
FROM CountrySales
WHERE Money > (
    SELECT 0.3 * MAX(Money) 
    FROM CountrySales
) AND Money < (
    SELECT 0.4 * MAX(Money) 
    FROM CountrySales
)
ORDER BY Money DESC;
SQL

这个查询使用了一个常用表(Common Table Expression,CTE)来计算各个国家的销售金额,并在主查询中使用了子查询来筛选出满足条件的记录。

标签: none

非特殊说明,本博所有文章均为博主原创。

上一篇 python 打断点调试
下一篇 没有了

评论啦~



已有 2 条评论


  1. pikavdokvq
    pikavdokvq

    文章深入浅出,既有深度思考,又不乏广度覆盖,令人叹为观止。

    回复 2025-03-02 16:57
  2. zatzwjpopv
    zatzwjpopv

    文章中的实用建议和操作指南,让读者受益匪浅,值得珍藏。

    回复 2025-03-02 21:23