2017-06-01 103 views
1

我有一個MySql表:SQL組由日期時間

+--------------------+----------------+ 
| datetime   | energy   | 
+--------------------+----------------+ 
| 2010-06-15 10:00:00|    1| 
| 2010-06-15 10:15:00|    3| 
| 2010-06-15 10:30:00|    6| 
| 2010-06-15 10:45:00|    7| 
| 2010-06-15 11:00:00|    9| 
| 2010-06-15 11:15:00|    12| 
| 2010-06-15 11:30:00|    15| 
| 2010-06-15 11:45:00|    28| 
| 2010-06-15 12:00:00|    52| 
| 2010-06-15 12:15:00|    75| 
| 2010-06-15 12:30:00|    88| 
| 2010-06-15 12:45:00|    102| 
| 2010-06-15 13:00:00|    150| 
| 2010-06-15 13:15:00|    189| 
| 2010-06-15 13:30:00|    200| 
| 2010-06-15 13:45:00|    205| 
| 2010-06-15 14:00:00|    209| 
| 2010-06-15 14:15:00|    400| 
| 2010-06-15 14:30:00|    450| 
| 2010-06-15 14:45:00|    480| 
| 2010-06-15 15:00:00|    500| 
+--------------------+----------------+ 

我會獲得生產的每一個小時的每小時一次的最大值和最小值之間的差異:

例如:

小時10的產生由產品給出。小時11(值= 9)生產少10小時的(值= 1) - >結果= 8

預期結果

+--------------+----------------+ 
| datetime  | energy   | 
+--------------+----------------+ 
| 2010-06-15 10|    8| 
| 2010-06-15 11|    43| 
| 2010-06-15 12|    98| 
| 2010-06-15 13|    69| 
| 2010-06-15 14|    291| 
+--------------+----------------+ 

select max(energy) - min(energy) 
FROM tableA 
group by hour(datetime) 

此查詢不起作用,因爲使10之間的差:45和10:00(不是11:00和10:00)

有什麼建議嗎?

+0

你想要的最大值和最小值之間的差異,還是從一小時的開始到下一小時的開始之間的差異? – Barmar

+0

是能量總是越來越多,所以他們同樣的事情? – Barmar

+0

我想最大值和最小值之間的差異,即使精力總是不斷增加,因爲有時候樣品可以缺少。 –

回答

0

要獲得每個小時之間的差異,請使用一個自聯接來關聯相隔一小時的時間。

SELECT a.datetime, b.energy - a.energy AS energy 
FROM tableA AS a 
JOIN TableA AS b ON a.datetime = DATE_SUB(b.datetime, INTERVAL 1 HOUR) 
WHERE MINUTE(a.datetime) = 0 

DEMO

+0

我需要最大值和最小值之間的差值,即使能量總是增加,因爲有時候樣品可能會丟失 我不確定每個XX:00分鐘 –

+0

但是如果您想在10小時內使用最大值,爲什麼它會使用從11:00開始的能量?那不是在同一個小時。 – Barmar

+0

如果10:45比11:00高,您應該使用它作爲最大? – Barmar

0

例如具有缺失數據

+ -------------------- + -------- -------- + | datetime |能源| + -------------------- + ---------------- + | 2010-06-15 10:00:00 | 1 | | 2010-06-15 10:45:00 | 7 | | 2010-06-15 11:00:00 | 9 | | 2010-06-15 11:15:00 | 12 | | 2010-06-15 11:30:00 | 15 | | 2010-06-15 11:45:00 | 28 | | 2010-06-15 12:15:00 | 75 | | 2010-06-15 12:30:00 | 88 | | 2010-06-15 12:45:00 | 102 | | 2010-06-15 13:00:00 | 150 | | 2010-06-15 13:15:00 | 189 | | 2010-06-15 13:30:00 | 200 | | 2010-06-15 13:45:00 | 205 | | 2010-06-15 14:00:00 | 209 | | 2010-06-15 14:15:00 | 400 | | 2010-06-15 14:30:00 | 450 | | 2010-06-15 14:45:00 | 480 | | 2010-06-15 15:00:00 | 500 | + -------------------- + ---------------- +

在這個例子中,一些樣本是失蹤。

預期結果:

+ -------------- + ---------------- + | datetime |能源| + -------------- + ---------------- + | 2010-06-15 10 | 8 | 11:00至10:00 | 2010-06-15 11 | 17 | 11:45至11:00 | 2010-06-15 12 | 150 | 13:00至12:15 | 2010-06-15 13 | 69 | 13:00至14:00 | 2010-06-15 14 | 291 | 14:00至15:00 + -------------- + ---------------- +

我總是想組通過一個完整的小時: 從10:00至11:00包括 從11:00到12:00包括 從12:00到13:00包括 ECC .... immagine