Mình có query lấy giá trị lớn nhất trong vòng một giờ(theo chu kì) của một thiết bị cụ thể như sau:
SELECT from_unixtime(thoiGian), nhienLieu
FROM `gtse`.`tblDoXang`
where concat(date(from_unixtime(thoiGian)), hour(from_unixtime(thoiGian)), nhienLieu) in
(select
concat(date(from_unixtime(thoiGian)), hour(from_unixtime(thoiGian)), max(nhienLieu))
from gtse.tblDoXang
where accountID = 'vinhnghia'
and deviceID = '14C-00263'
and from_unixtime(thoiGian) between '2014-10-01 00:00:00' and '2014-11-18 23:59:59'
group by
date(from_unixtime(thoiGian)),
hour(from_unixtime(thoiGian)))
Giờ mình luốn select cả bảng để lấy tất cả các giá trị của các account và device khác nhau thoả mãn điều kiện là chỉ lấy giá trị lớn nhất của nhienLieu trong mỗi một giờ. Mình thử truy vấn này:
SELECT from_unixtime(thoiGian), nhienLieu
FROM `gtse`.`tblDoXang`
where concat(date(from_unixtime(thoiGian)), hour(from_unixtime(thoiGian)), nhienLieu) in
(select
concat(date(from_unixtime(thoiGian)), hour(from_unixtime(thoiGian)), max(nhienLieu))
from gtse.tblDoXang
group by
date(from_unixtime(thoiGian)),
hour(from_unixtime(thoiGian)))
Sau đó mình check lại thì thấy nó lấy thiếu một số giá trị max so với query mình thử với accountID và deviceID ở trên. Do trong bảng tblDoXang mình có rất nhiều account nên việc lấy thủ công như đoạn query trên(đầu tiên) là không thể. Vậy cho mình hỏi cách nào lấy cả bảng (thỏa mãn điều kiện max) không?
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?