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

SQL Server如何编写SQL查询实现价格数量相关标记逻辑

SQL Server 价格数量匹配标记查询方案

需求背景

基于Microsoft SQL Server编写查询,实现价格数量为10时的对应标记提取功能,核心计算与判定规则如下:

  • 平均价格计算公式:Price / PriceQuantity(即价格列除以价格数量列)
  • 标记判定规则:
    • 同一比对维度下全部6个地点的Price Quantity值不完全匹配时,标记为Fail
    • 同一比对维度下全部6个地点的Price Quantity值完全匹配时,标记为Pass

参考实现代码

假设存储价格数据的表为PriceInfo,表中包含商品标识字段SkuId(即跨6个地点比对的同一商品维度,可根据实际业务替换为对应字段)、地点字段LocationId、价格字段Price、价格数量字段PriceQuantity,查询语句如下:

WITH GroupCheck AS (
    SELECT
        SkuId,
        -- 统计分组内价格数量的去重值数量
        COUNT(DISTINCT PriceQuantity) AS DistinctPqCount,
        -- 计算分组平均价格,处理除零异常
        AVG(Price * 1.0 / NULLIF(PriceQuantity, 0)) AS AvgPrice
    FROM PriceInfo
    -- 若需要筛选价格数量为10的场景,取消下方注释即可
    -- WHERE PriceQuantity = 10
    GROUP BY SkuId
    -- 仅保留覆盖全部6个地点的分组
    HAVING COUNT(LocationId) = 6
)
SELECT
    p.*,
    gc.AvgPrice,
    -- 去重计数为1说明所有地点价格数量完全一致,否则判定为不匹配
    CASE WHEN gc.DistinctPqCount = 1 THEN 'Pass' ELSE 'Fail' END AS Flag
FROM PriceInfo p
INNER JOIN GroupCheck gc
    ON p.SkuId = gc.SkuId;

注意事项

  • 请将代码中的表名、字段名替换为实际业务环境中的对应名称
  • 计算平均价格时乘1.0是为了避免SQL Server整数除法导致的精度丢失问题
  • 若业务中比对维度不是商品SKU,可将GROUP BY后的字段替换为实际需要的维度(比如定价批次、商品分类等)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 04:42:40