mysql - 如何使用sql select获取一组记录中一列的最大值结果?

标签 mysql sql

我在表格中保存了这些数据。

date       | name        | code
2020-01-01 | category1   | 0
2020-01-02 | category1   | 1
2020-01-03 | category1   | 2
2020-01-04 | category1   | 3
2020-01-05 | category1   | 0
2020-01-06 | category1   | 1
2020-01-07 | category1   | 2
2020-01-08 | category1   | 0
2020-01-01 | category2   | 0
2020-01-02 | category2   | 0
2020-01-03 | category2   | 1
2020-01-04 | category2   | 0
2020-01-05 | category2   | 1
2020-01-06 | category2   | 2
2020-01-07 | category2   | 0
2020-01-08 | category2   | 1
......

集合中的列代码增加1。

需要获取一组记录中某一列具有最大值的记录。我的示例的结果必须是:

date       | name        | code
2020-01-04 | category1   | 3
2020-01-07 | category1   | 2
2020-01-03 | category2   | 1
2020-01-06 | category2   | 2
2020-01-08 | category2   | 1
......

最佳答案

这是你想要的吗?

select date, name, code
from (
    select 
        t.*,
        lead(code) over(partition by name order by date) lead_code
    from mytable t
) t 
where not code <= lead_code

对于您的示例数据,this produces :

date       | name      | code
:--------- | :-------- | ---:
2020-01-04 | category1 |    3
2020-01-07 | category1 |    2
2020-01-03 | category2 |    1
2020-01-06 | category2 |    2

关于mysql - 如何使用sql select获取一组记录中一列的最大值结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59934244/

相关文章:

PHP 这段代码有什么问题?

php - PHP 代码或 CSV 文件缺少什么?

java - jOOQ - 没有 where() 的 return() 不可用

sql - 设置 IDENTITY_INSERT postgresql

mysql - 如何求总和并得到百分比?

java - 敏感可滚动结果集不反射(reflect) Oracle 数据库中的数据库更改

php - 在本地 Wamp 上设置远程 WordPress 站点时出现问题

php - 在 php 附近的邮政编码页面中返回 Sql 错误

mysql - 使用 MySQL 函数或过程提取 SELECT 表达式

mysql - 如何将表导入到现有表中