==
sql 每一天只取一个 sql 相同日期只取一个
oracle 每天一条
--
表table_a结构与数据:
id name time
1 张三 2010-01-01 4:30:30
1 张三 2010-01-01 8:30:30
1 张三 2010-01-01 9:30:30
1 张三 2010-01-02 4:30:30
1 张三 2010-01-02 5:30:30
1 张三 2010-01-02 6:30:30
1 张三 2010-01-03 7:30:30
1 张三 2010-01-03 8:30:30
1 张三 2010-01-03 9:30:30
1 张三 2010-01-04 7:30:30
1 张三 2010-01-04 8:30:30
1 张三 2010-01-05 9:30:30
例如:我要获得每天最早的两条记录
结果:
1 张三 2010-01-01 4:30:30
1 张三 2010-01-01 8:30:30
1 张三 2010-01-02 4:30:30
1 张三 2010-01-02 5:30:30
1 张三 2010-01-03 7:30:30
1 张三 2010-01-03 8:30:30
1 张三 2010-01-04 7:30:30
1 张三 2010-01-04 8:30:30
1 张三 2010-01-05 9:30:30
with t1 as(
select id,name, time,
row_number()over(partition by id,trunc(time) ORDER BY time asc) rn
from table_a
)
SELECT * from t1 WHERE rn<=2
每天一条
则 SELECT * from t1 WHERE rn<=1
实现的关键语句 就是 row_number()over(partition by id,trunc(time) ORDER BY time asc) rn
和 WHERE rn<=2
==
partition
隔断、分区
==
ambiguous
不清楚的,不够明确的
==
CONVERT
转换
==
SQL Server CONVERT() 函数
CONVERT() 函数是把日期转换为新数据类型的通用函数。
CONVERT() 函数可以用不同的格式显示日期/时间数据。
==