Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算mysql中项目的总价_Mysql_Sql - Fatal编程技术网

计算mysql中项目的总价

计算mysql中项目的总价,mysql,sql,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

我有这样一个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
但它不能正确计算所有项目的总和。看看我的桌子:

所有项目的总和应该是21,但是,你会看到它是15。 因为user_ad_type+user_ad_电报+user_ad_网站不为空或具有特殊值,且该项之和为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
但它仍然不包括所有的项目


我想检查一下,如果某些列不为null或具有特殊值,那么将价格添加到这些列中,并获得这些项目的总价。

我想您需要单独的总和:

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;