我有此表从我必须选择最新的行中每个位置一列选择最新的记录组
| location | parameter | datetime | value |
---------------------------------------------------------------------
| Location 1 | P1 | 2017-09-13 05:00:00 | 0.68 |
| Location 1 | P2 | 2017-09-13 05:00:00 | 6 |
| Location 1 | P3 | 2017-09-13 06:00:00 | 19 |
| Location 1 | P4 | 2017-09-13 06:00:00 | 1 |
| Location 2 | P1 | 2017-09-13 05:00:00 | 0.1 |
| Location 2 | P2 | 2017-09-13 05:00:00 | 2 |
| Location 2 | P3 | 2017-09-13 06:00:00 | 26 |
| Location 2 | P5 | 2017-09-13 06:00:00 | 7.9 |
| Location 2 | P4 | 2017-09-13 07:00:00 | 0 |
| Location 3 | P1 | 2017-09-13 04:00:00 | 0.47 |
| Location 3 | P2 | 2017-09-13 05:00:00 | 1 |
| Location 3 | P3 | 2017-09-13 04:00:00 | 25 |
| Location 3 | P5 | 2017-09-14 05:00:00 | 3.8 |
---------------------------------------------------------------------
我曾尝试以下查询,但两者都没有返回每个位置的最新数据。
SELECT * FROM mytable WHERE
datetime in (SELECT max(datetime) FROM myTable Group by location)
group by location;
和
SELECT * FROM myTable AS t1
INNER JOIN
(
SELECT MAX(datetime) AS maxDate
FROM myTable
GROUP BY location
) AS t2 ON t1.datetime = t2.maxDate group by t1.location;
两个查询返回错误的数据位置2.
一旦做到这一点我也想在最新的日期相同,则查询添加另一个条件按值排序desc并选择最高值的记录。
预期的输出是
| location | parameter | datetime | value |
---------------------------------------------------------------------
| Location 1 | P3 | 2017-09-13 06:00:00 | 19 |
| Location 2 | P4 | 2017-09-13 07:00:00 | 0 |
| Location 3 | P5 | 2017-09-14 05:00:00 | 3.8 |
---------------------------------------------------------------------
但查询我试图返回错误的日期,地点2.
任何帮助表示赞赏。
你如何识别最新行如果两个行具有相同的'datetime'? –
这并不重要,任何与每个位置的最新日期的行都会很好,但我想添加另一个条件,正如我在问题中提到的那样。 – Ana
您是否也可以发布预期的结果集?还优选包括样本数据以及格式化文本而不是图像。 –