1

私は次の結果を得ようとしています:

     HOUR  Throughput     Difference
       0           298          0
       1           209         -89
       6           1          -208
       7           8            -7
       8            9           1
       9           175          166
       10         223        and so on
       11         260
       12         246
       13         195
       14         170
       15         230
       16         200
       17         301
       18         316
       19         282
       20         293
       21         281
       22         175
       23         244

私が現在持っているSQLステートメントは

    SELECT DISTINCT
    HOUR(p_datetime) as HOUR,
    Count(p_type) as Throughput
    FROM
    product_log
    WHERE
    DATE(p_datetime) = '2013-11-30' AND
    p_type='STACK'
    GROUP BY HOUR;

しばらく試してみましたが、解決策が見つかりません。これは mysql で行われます。ありがとう!

4

1 に答える 1

4

それを行う1つの方法

SELECT hour, throughput, difference
  FROM
(
  SELECT hour, throughput, 
         throughput - @p difference, @p := throughput
    FROM
  (
    SELECT HOUR(p_datetime) hour,
           COUNT(*) throughput
      FROM product_log l
     WHERE p_datetime >= '2013-11-30'
       AND p_datetime < '2013-11-31'
       AND p_type = 'stack'
     GROUP BY HOUR(p_datetime)
  ) a CROSS JOIN (SELECT @p := 0) i
) b

これがSQLFiddleのデモです

于 2014-01-03T22:06:08.487 に答える