计算mysql中物品的总价

时间:2020-02-12 14:22:16

标签: mysql sql

我有这样的SQL查询:

SELECT sum(CASE
             WHEN user_ad_type = '2' THEN
               10
             WHEN user_ad_type = '3' THEN
               15
             WHEN user_ad_telegram != '' OR user_ad_telegram IS NOT NULL THEN
               3
             WHEN user_ad_website != '' OR user_ad_website IS NOT NULL THEN
               3
             ELSE
               0
           END) sum
       FROM ads
       WHERE user_id = 57

但是它不能正确计算所有项目的总和。看我的桌子: click here to open img

因此,所有项目的总和应为 21 ,但应为 if you take a look at this img ,您将看到其计数为 15 。 因为 user_ad_type + user_ad_telegram + user_ad_website 不为null或具有特殊值,并且此项的总和为21。出什么事了?

我什至对此进行了测试:

SELECT sum(CASE
             WHEN user_ad_type = '2' THEN
               10
             WHEN user_ad_type = '3' THEN
               15
             WHEN user_ad_telegram IS NOT NULL THEN
               3
             WHEN user_ad_website IS NOT NULL THEN
               3
             ELSE
               0
           END) sum
       FROM ads
       WHERE user_id = 57

但是它仍然不算所有物品。

我想检查某些列是否不为空或具有特殊值,然后为其添加价格并获得< strong>该商品的总价。

1 个答案:

答案 0 :(得分:0)

我认为您需要单独的金额:

SELECT (SUM(CASE WHEN user_ad_type = '2' THEN 10
                 WHEN user_ad_type = '3'
                 THEN 15
            END) +
        SUM(CASE WHEN user_ad_telegram <> '' THEN 3 ELSE 0 END) + -- handles NULL as well
        SUM(CASE WHEN user_ad_website <> '' THEN 3 ELSE 0 END)
       ) as sum
FROM ads
WHERE user_id = 57;