[英]Select rows with MAX(datetime) and also get min values with their dates for a column?
[英]How do I select rows with MAX(datetime) and also get min values for a column?
我的表是這樣的(np_capacity):
id tower datetime capacity
---|----|---------------------|----------
1 | A | 2016-05-29 09:02:41 | 34676
2 | B | 2016-05-29 09:02:41 | 10736
5 | C | 2016-05-29 09:02:41 | 55664
3 | D | 2016-05-29 09:02:41 | 32622
4 | A | 2016-05-29 13:08:38 | 5474
6 | B | 2016-05-29 13:08:38 | 20692
7 | C | 2016-05-29 13:08:38 | 134802
8 | D | 2016-05-29 13:08:38 | 4754
我想選擇所有具有最大日期的塔,然后為這些塔選擇表中的最小容量值。
結果將是:
id tower datetime capacity MinCapacity
---|----|---------------------|----------|-------------
4 | A | 2016-05-29 13:08:38 | 5474 | 5474
6 | B | 2016-05-29 13:08:38 | 20692 | 10736
7 | C | 2016-05-29 13:08:38 | 134802 | 55664
8 | D | 2016-05-29 13:08:38 | 4754 | 4754
我所擁有的是這個,但它並不總是能給出正確的最小值。
SELECT npc.*, groupedcap.MinCapacity
FROM np_capacity npc
INNER JOIN
(SELECT tower, MAX(date) AS MaxDate
FROM np_capacity
GROUP BY tower) groupednpc
ON npc.tower = groupednpc.tower
INNER JOIN
(SELECT tower, MIN(capacity) AS MinCapacity
FROM np_capacity
GROUP BY tower) groupedcap
ON npc.tower = groupedcap.tower
AND npc.date = groupednpc.MaxDate
您可以使用子選擇來計算最小容量和最大日期。 然后,與表聯接以獲取其他字段。
select npc.*, calc.minCapacity
from (
select tower, max(datetime) maxDate, min(capacity) minCapacity
from np_capacity
group by tower
) calc
join np_capacity npc on (npc.tower = calc.tower
and npc.datetime = npc.maxDate)
該請求選擇所有塔,並選擇每個塔的最大日期時間和最小容量。
如果只需要具有maxdatetime的塔,則可以使用:
select npc.*, (select min(c2.capacity) from np_capacity c2
where c2.tower = npc.tower) minCapacity
from (select max(datetime) maxDatetime from np_capacity) c1
join np_capacity npc on (npc.datetime = c1.maxDatetime)
SELECT `a`.`id`,`a`.`tower`,`a`.`datetime`,`a`.`capacity`,(SELECT MIN(`b`.`capacity`)
FROM `np_capacity` `b` WHERE `b`.`tower`=`a`.`tower` ) AS `MinCapacity` FROM `np_capacity` `a`
WHERE `a`.`datetime`=(SELECT MAX(`datetime`) FROM `np_capacity`);
在SQL Fiddle上測試以上查詢
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.