You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询需求:获取满足两类商品订购量条件的客户及订购总额

解决方案:满足需求的SQL查询语句

没问题,我来帮你搞定这个查询需求。首先得理清各表之间的关联逻辑,然后通过条件聚合来分别计算两类商品的订购总金额,同时加上数量对比的筛选条件。以下是完整的SQL语句:

SELECT
    c.numClient,
    c.nomClient,
    c.numTel,
    -- 计算单价>2000的dispendic类商品总金额:订单数量×商品单价的总和
    SUM(CASE 
        WHEN a.description = 'dispendic' AND a.prixUnitaire > 2000 
        THEN lc.qte * a.prixUnitaire 
        ELSE 0 
    END) AS total_montant_dispendic,
    -- 计算单价<1500的modic类商品总金额:订单数量×商品单价的总和
    SUM(CASE 
        WHEN a.description = 'modic' AND a.prixUnitaire < 1500 
        THEN lc.qte * a.prixUnitaire 
        ELSE 0 
    END) AS total_montant_modic
FROM
    Client c
INNER JOIN Commande cmd ON c.numClient = cmd.numClient
INNER JOIN LigneCommande lc ON cmd.numCde = lc.numCde
INNER JOIN Article a ON lc.numArticle = a.numArticle
GROUP BY
    c.numClient, c.nomClient, c.numTel
HAVING
    -- 筛选条件:dispendic类商品的总订购数量 < modic类商品的总订购数量
    SUM(CASE WHEN a.description = 'dispendic' THEN lc.qte ELSE 0 END) 
    < 
    SUM(CASE WHEN a.description = 'modic' THEN lc.qte ELSE 0 END)

代码关键部分解释:

  • 表关联逻辑:用INNER JOIN依次串联Client→Commande→LigneCommande→Article,确保只返回有有效订单记录的客户数据。
  • 总金额计算:通过SUM(CASE...)实现条件求和,仅对符合商品类别和单价要求的订单明细计算金额,不符合条件的记录贡献值为0,不会影响最终总和。
  • 数量筛选条件:在HAVING子句中再次使用条件聚合统计两类商品的总订购数量,筛选出dispendic类订购量小于modic类的客户分组。

如果你的description字段中商品类名的拼写有差异(比如大小写、复数形式),记得根据实际数据调整条件里的字符串哦。

内容的提问来源于stack exchange,提问作者emna mokhtar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:04:04