相关疑难解决方法(0)

SQL Group by&Max

我在表格中有以下数据:

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
Run Code Online (Sandbox Code Playgroud)

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

3   test    voltage  psu        warning
5   test    temp     rcc        ceasing
Run Code Online (Sandbox Code Playgroud)

我到目前为止尝试过:

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

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

sql group-by max

19
推荐指数
3
解决办法
6万
查看次数

"select max in group"的最佳性能查询?

我有一个简单的表评论(id INT, revision INT, comment VARCHAR(140))与这样的一些内容:

1|1|hallo1|
1|2|hallo2|
1|3|hallo3|
2|1|hallo1|
2|2|hallo2|
Run Code Online (Sandbox Code Playgroud)

我正在搜索一个SQL语句,它将返回具有最高版本的每个评论:

1|3|hallo3|
2|2|hallo2|
Run Code Online (Sandbox Code Playgroud)

我想出了这个解决方案:

select id, revision, comment 
  from comments 
  where revision = (
      select max(revision) 
        from comments as f 
        where f.id = comments.id
  );
Run Code Online (Sandbox Code Playgroud)

但是在大型数据集上它很慢.有没有更好的查询来实现这一目标?

sql database

14
推荐指数
2
解决办法
2万
查看次数

使用MAX和GROUP BY选择所有相应的字段

我有这张桌子:

替代文字

我想提出,将返回每个请求deal_id具有最高的行timestamp,并相应status_id.

所以对于这个例子,我会返回2行:

1226, 3, 2009-08-18 12:10:25
1227, 2, 2009-08-17 14:31:25
Run Code Online (Sandbox Code Playgroud)

我尝试用这个查询来做

SELECT deal_id, status_id, max(timestamp) FROM deal_status GROUP BY deal_id
Run Code Online (Sandbox Code Playgroud)

但它会回错status_id:

1226, 1, 2009-08-18 12:10:25
1227, 1, 2009-08-17 14:31:25
Run Code Online (Sandbox Code Playgroud)

mysql sql group-by max greatest-n-per-group

13
推荐指数
1
解决办法
1万
查看次数

标签 统计

sql ×3

group-by ×2

max ×2

database ×1

greatest-n-per-group ×1

mysql ×1