计算mysql中项目的总价
我有这样一个SQL查询:计算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
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;