2

列 ( * 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

sum()mysqlの関数内に条件を入れることはできますか? 可能であれば、解決策を教えてください。これで問題が解決するかもしれません

4

3 に答える 3

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

SQL Fiddle with Demoを参照してください

于 2012-09-12T11:30:55.863 に答える
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;
于 2012-09-12T11:37:11.273 に答える
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
于 2012-09-12T11:38:48.450 に答える