0

私はこのmysqlクエリを持っています

SELECT YEAR(date_entered), MONTHNAME(date_entered), SUM(amount)
FROM opportunities
GROUP BY YEAR(date_entered), MONTH(date_entered);

このデータを戻す

"year(date_entered)","monthname(date_entered)","sum(amount)"
"2009","March","9038714.77"
"2009","April","2205819"
"2009","May","9706852.6"

私がする必要があるのは違いを示すことですか?たとえば、3 月は 903、4 月は 220 だったので、差は 680 など、最新の合計値から貴重な月の値を引いたものでしょうか?

前もって感謝します

4

2 に答える 2

0

次のように、変数を使用してクエリを使用します。

SELECT
  year_entered, month_entered,
  total_amount-@last_sum diff,
  @last_sum:=total_amount total_amount
FROM (
  SELECT
    YEAR(date_entered) year_entered,
    MONTHNAME(date_entered) month_entered,
    SUM(amount) total_amount
  FROM
    opportunities
  GROUP BY
    YEAR(date_entered), MONTH(date_entered)
  ORDER BY
    YEAR(date_entered), MONTH(date_entered)
  ) s,
  (SELECT @last_sum:=null) r

ここでフィドルを参照してください。

于 2013-04-28T21:56:21.160 に答える
0

試す

SELECT year_entered, 
       month_entered,
       IFNULL(amount - @n, 0) amount_diff,
       @n := amount current_amount
  FROM
 (SELECT YEAR(date_entered) year_entered, 
         MONTHNAME(date_entered) month_entered, 
         SUM(amount) amount
    FROM opportunities
   GROUP BY YEAR(date_entered), MONTH(date_entered)) q, 
 (SELECT @n := NULL) n
于 2013-04-28T21:56:28.930 に答える