簡體   English   中英

Mysql-聚合function查詢分組問題

[英]Mysql- Aggregate function query grouping problem

考慮下表。


在此處輸入圖像描述


我正在嘗試編寫一個查詢來顯示 - 每個類別的所有部分的最大值。 還顯示值為最大值的日期。

所以我嘗試了這個-

select Part_id, Category, max(Value), Time_Captured
from data_table
where category = 'Temperature'
group by Part_id, Category

首先,mysql 沒有因為沒有 Time_Captured 分組而引發錯誤。 不確定是 mysql 還是我的mysql 的問題。

所以我認為它應該返回 -

1   Temperature 50  11-08-2011 08:00
2   Temperature 70  11-08-2011 09:00

但是它返回了我從數據集的第一條記錄中捕獲的時間,即11-08-2011 07:00

不知道我哪里錯了。 有什么想法嗎?

(注意:我在虛擬機中運行它。以防萬一它改變了什么)

您需要加入找到最大值(值)的查詢結果,如下所示:

select dt.Part_id, dt.Category, dt.Value, dt.Time_Captured
from data_table dt
join (select Part_id, Category, max(Value) as Value
          from data_table group by 1, 2) x 
    on x.Part_id = dt.Part_id and x.Category = dt.Category
where dt.category = 'Temperature';

請注意,如果有多行具有相同的最大值,這將返回多行。

如果您想將其限制為一行,即使 max(value) 有多個匹配項,select max(Time_Captured) (或 min(Time_Captured) 如果您願意),如下所示:

select dt.Part_id, dt.Category, dt.Value, max(dt.Time_Captured) as Time_Captured
from data_table dt
join (select Part_id, Category, max(Value) as Value
          from data_table group by 1, 2) x 
    on x.Part_id = dt.Part_id and x.Category = dt.Category
where dt.category = 'Temperature'
group by 1, 2, 3;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM