sql >> データベース >  >> RDS >> Mysql

別の列の値のグループに基づいて、列の値を合計します

    mysqlはウィンドウ関数をサポートしていないため、テーブルに対して独自のグループランキングを作成してから、結果を操作するための別のクエリを作成する必要があります。

    select if(count(transaction) = 1, transaction, concat(min(transaction), '-', max(transaction))) transactions, sum(price) price 
      from (
        select if(`transaction` = @prev + 1, 
             if(@prev := `transaction`, @rank, @rank),
               if(@prev := `transaction`, @rank := @rank + 1, @rank := @rank + 1)
           ) gr,
           `transaction`,
           price
        from table1, (select @rank := 1, @prev := 0) q
        order by `transaction` asc
      ) q     
      group by gr
    

    デモはこちら




    1. OracleDatabaseのPL/SQLストアドプロシージャとは

    2. Postgresql in memory database django

    3. 1対多の関係に存在する数を数えます

    4. OracleのROWIDは内部でどのように生成されますか?