mysql - SQL+获取最新日期的行+row_number()+重复的情况

标签 mysql sql impala

我有一个包含字段(id、日期、产品)的表格,其中包含以下示例数据

id  date    Product current_Flag    Expected_flag
14834   2019-01-03 00:00:00 A   1   1
14834   2019-01-31 00:00:00 B   0   0
14834   2019-02-28 00:00:00 C   0   0
14834   2019-03-30 00:00:00 C   0   0
14834   2019-01-03 00:00:00 D   0   1

我正在尝试case when row_number() over (partition by id order by date) = 1 then 1 else 0 end as flag , 但对于具有最小日期的特定不同 ID,它的标记为 1,但我需要将特定 Id 和最短日期和产品标记为 1 标记,如 Expected_flag 中所示

case when row_number() over (partition by id order by date) = 1 then 1 else 0 end as flag

最佳答案

您需要使用dense_rank():

case when dense_rank() over (partition by id order by date) = 1 then 1 else 0 end as Expected_flag

关于mysql - SQL+获取最新日期的行+row_number()+重复的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56339705/

相关文章:

mysql - 什么模式只匹配相同的数字(1111)并排除差异数字(1234)?

mySQL - 使用返回多行的选择更新多列

php - 查询一个Mysql数据库的多个表

sql - 电子商务应用程序的最终国家列表

mysql - 留言板结构数据库

mysql - 基于公共(public)数据字段连接两个查询的结果

sql - 如何在 SQL 的特定行中找到最少的非空列?

sql - SQL中计算最后两个订单中金额小于当前订单值的客户的订单数量?

hadoop - Avro、parquet 和 SequenceFileFormat 在 Hadoop 生态系统中的地位及其效用

hadoop - 如何从本地磁盘而不是HDFS上的数据在Hive上创建外部表?