我有一个专栏( * Purchasetype * ),视频表 purchasetype 中的用户ID是如何包含值0,1,2, 3,4,..等我希望通过userid
对这两个值进行求和。
对于前:sum ( purchasetype ) order by userid
但我想要这样
if purchasetype= 0 then its value is 0.99
if purchasetype =1 or 20 then its value is 3.99
if purchasetype = 3 or 13or 22 then its value is 9.99
等等。以下是完整清单
0 ,17= 0.99
1,20=3.99
2=6.99
3,13,22=9.99
4,5,6,7,8,,10,11,12=0.00
14=19.99
15,23=39.99
16,24=59.99
18,21=01.99
19=02.99
else
19.99
我想将purchasetype
的所有值与其替换值相加(上面给出)order by userid
我们可以将条件放在mysql的sum()
函数中吗?如果它可能那么请给我解决方案,可能这将解决我的问题
答案 0 :(得分:3)
您可以使用汇总函数SUM()
和CASE
:
select
SUM(CASE purchaseType
WHEN 0 or 17 THEN 0.99
WHEN 1 or 20 THEN 3.99
WHEN 3 or 13 or 22 THEN 9.99
WHEN 4 or 5 or 6 or 7 or 8 or 9 or 10 or 11 or 12 THEN 0
WHEN 14 THEN 19.99
WHEN 15 or 23 THEN 39.99
WHEN 16 or 24 THEN 59.99
WHEN 18 or 21 THEN 1.99
WHEN 19 THEN 2.99
ELSE 19.99 END) as Total
from yourTable
答案 1 :(得分:0)
我认为最好的方法是创建表ptPrices
:
create table ptPrices (Purchasetype int, Price float);
insert into ptPrices values (0,0.99);
insert into ptPrices values (1,3.99);
....
insert into ptPrices values (19,2.99);
然后使用此查询:
select sum(isnull(ptPrices.Price,19.99)) from Table
left join ptPrices
on Table.Purchasetype=ptPrices.Purchasetype;
答案 2 :(得分:0)
虽然这不使用来自MySQL查询的SUM,但逻辑将完成工作
$query = mysqli_query($link, "SELECT * FROM video");
while($row = mysqli_fetch_assoc($query)){
//Then set conditionals
if($row['purchase_type)==0 || $row['purchase_type)==17){
$values[] = 0.99;
//Then your mysqli_query here
}
elseif($row['purchase_type)==1 || $row['purchase_type)==20){
$values[]= 3.99;
}
elseif//Blah blah for all values
}
//After exhausting all the rows, add the SUM
$sum = array_sum($values); //$sum will be equal to the addition of all the vlues of the //array $values