gpt4 book ai didi

SQL 分组依据和最大值

转载 作者:行者123 更新时间:2023-12-03 01:55:24 24 4
gpt4 key购买 nike

我的表格中有以下数据:

id  name    alarmId  alarmUnit  alarmLevel

1 test voltage psu warning
2 test voltage psu ceasing
3 test voltage psu warning
4 test temp rcc warning
5 test temp rcc ceasing

我只想显示有关每个列组(alarmId、alarmUnit)的最新信息,因此结果应如下所示:

3   test    voltage  psu        warning
5 test temp rcc ceasing

到目前为止我已经尝试过:

SELECT MAX(id) as id,name,alarmId,alarmUnit,alarmLevel GROUP BY AlarmId,alarmUnit;

选定的 ID 似乎没问题,但选定的行与它们不对应。你能帮我吗?

最佳答案

OracleSQL Server 2005+PostgreSQL 8.4 中:

SELECT  *
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY alarmId, alarmUnit ORDER BY id DESC) AS rn
FROM mytable
) q
WHERE rn = 1

MySQL中:

SELECT  mi.*
FROM (
SELECT alarmId, alarmUnit, MAX(id) AS mid
FROM mytable
GROUP BY
alarmId, alarmUnit
) mo
JOIN mytable mi
ON mi.id = mo.mid

PostgreSQL 8.3 及以下版本中:

SELECT  DISTINCT ON (alarmId, alarmUnit) *
FROM mytable
ORDER BY
alarmId, alarmUnit, id DESC

关于SQL 分组依据和最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1299556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com