计算案例陈述-当一个领域大于另一个领域

时间:2018-09-21 19:14:12

标签: mysql

我正在尝试确定数据库中特定错误的普遍程度。我正在将一个字段与另一个字段进行比较,当该字段大于另一个字段时,我希望它对其进行计数。我也通过不同的陈述将其分组。该查询的目的是确定一个价格字段大于另一个价格字段时我数据库中的情况。

查询中引起问题的部分是select语句中的“ COUNT(CASE,当p.IMAP> p.MSRP = 1 ELSE NULL END时)”。我在它周围放了两个小星星,希望能帮助突出显示它的位置。

select b.brandName, b.BrandCode, p.ProductVendorStockNumber, **COUNT(Case When p.IMAP > p.MSRP = 1 ELSE NULL END) as 'Count'**
from products p
join brands b on p.brandID = b.brandID 
where b.assignedTo = 'Steve' and p.IMAP > p.MSRP and status = 1
GROUP BY b.BrandName

1 个答案:

答案 0 :(得分:2)

对于计数值,当条件为true时,您可以使用sum而不是count加1;否则为count

在用于聚合的sql中,不建议使用不用于聚合功能且未在group by中提及的列的选择,在最新版本的mmysql中不允许使用,对于较旧的版本,这些值的结果不可预测,因此您应该在“分组”的“然后”列中,您在选择中没有聚合功能,例如:

    select b.brandName
        , b.BrandCode
        , p.ProductVendorStockNumber
        ,sum(Case When p.IMAP > p.MSRP THEN 1 ELSE 0  END) as my_count
    from products p
    join brands b on p.brandID = b.brandID 
    where b.assignedTo = 'Steve' and p.IMAP > p.MSRP and status = 1
    GROUP BY b.BrandName, b.BrandCode,  p.ProductVendorStockNumber

或使用没有聚合的行和右聚合行上的联接

过滤结果