来自数据集的SQL最后时间戳
我在获取数据库中每个nr的最后一个时间戳时遇到问题来自数据集的SQL最后时间戳,sql,timestamp,Sql,Timestamp,我在获取数据库中每个nr的最后一个时间戳时遇到问题 +--------+---------------------+------------------------------+ | nr | type | ts | +--------+---------------------+------------------------------+ | | |
+--------+---------------------+------------------------------+
| nr | type | ts |
+--------+---------------------+------------------------------+
| | | |
| 1002 | RSC | 2017-12-05 07:53:42 |
| 1002 | RSC | 2017-12-05 07:52:42 |
| 1004 | RSC | 2017-12-05 07:54:42 |
| 1004 | RSC | 2017-12-05 07:51:42 |
| 1004 | RSC | 2017-12-05 07:51:42 |
+--------+---------------------+------------------------------+
选择后的结果:
+-------+---------------------+-------------------------+
| 1002 | RSC | 2017-12-05 07:53:42 |
+-------+---------------------+-------------------------+
| 1004 | RSC | 2017-12-05 07:54:42 |
+-------+---------------------+-------------------------+
谢谢您的帮助。您可以在此处使用
行号
:
SELECT nr, type, ts
FROM
(
SELECT nr, type, ts,
ROW_NUMBER() OVER (PARTITION BY nr ORDER BY ts DESC) rn
FROM yourTable
) t
WHERE t.rn = 1;
如果您的SQL版本没有分析函数,那么我们也可以加入子查询以获得相同的结果:
SELECT t1.*
FROM yourTable t1
INNER JOIN
(
SELECT nr, MAX(ts) AS max_ts
FROM yourTable
GROUP BY nr
) t2
ON t1.nr = t2.nr AND
t1.ts = t2.max_ts;
您可以在此处使用
ROW\u NUMBER
:
SELECT nr, type, ts
FROM
(
SELECT nr, type, ts,
ROW_NUMBER() OVER (PARTITION BY nr ORDER BY ts DESC) rn
FROM yourTable
) t
WHERE t.rn = 1;
如果您的SQL版本没有分析函数,那么我们也可以加入子查询以获得相同的结果:
SELECT t1.*
FROM yourTable t1
INNER JOIN
(
SELECT nr, MAX(ts) AS max_ts
FROM yourTable
GROUP BY nr
) t2
ON t1.nr = t2.nr AND
t1.ts = t2.max_ts;
您还可以使用“分组依据”:
SELECT nr, type, MAX(ts) FROM TABLE
group by nr, type
您还可以使用“分组依据”:
SELECT nr, type, MAX(ts) FROM TABLE
group by nr, type
在某种意义上,如果时间戳决定顺序,则需要按nr分组,然后在时间戳上使用min或max。否则,您将研究更复杂的问题,如以下答案: 实际语法根据数据库的不同而有所不同,但第一个答案在普通的ANSI SQL中是正确的
SELECT nr, type, MAX(ts) FROM t
GROUP BY nr, type
在某种意义上,如果时间戳决定顺序,则需要按nr分组,然后在时间戳上使用min或max。否则,您将研究更复杂的问题,如以下答案: 实际语法根据数据库的不同而有所不同,但第一个答案在普通的ANSI SQL中是正确的
SELECT nr, type, MAX(ts) FROM t
GROUP BY nr, type
以下是我在评论中提出的解决方案:
SELECT
nr
,type
,MAX(ts) AS [Last Timestamp]
FROM <your_table>
GROUP BY nr, type
选择
天然橡胶
,类型
,最大值(ts)为[最后时间戳]
从…起
按nr、类型分组
此链接将帮助您更好地理解
GROUP BY
子句和聚合函数。以下是我在评论中建议的解决方案:
SELECT
nr
,type
,MAX(ts) AS [Last Timestamp]
FROM <your_table>
GROUP BY nr, type
选择
天然橡胶
,类型
,最大值(ts)为[最后时间戳]
从…起
按nr、类型分组
此链接将帮助您更好地理解
groupby
子句和聚合函数。只需使用groupby
和MAX
只需使用groupby
和MAX