SQL按日期分组的最新日期

时间:2019-12-04 12:43:05

标签: sql

我有以下列名称的表 我们有多个约会的日期,其中多个约会有30秒的日期槽 我需要根据对bin的最后一个条目提取数据

假设1990025I仅在今天查询时有100个条目,当我确实找到所有按条目分类的条目时,我需要最后一个输入记录

对于基数为一个的Bin查询

select * from battery_data where tcu_date_ist =(
SELECT MAX(tcu_date_ist) FROM battery_data WHERE bin='1990051I');

如何获取所有Bin组查询,并且还需要其中的latitudelongitude

SELECT  latitude, longitude,  bin,created_date
        FROM public.battery_data  
        group by latitude, longitude,  bin  ,created_date
        ORDER BY created_date DESC

输出变得像

12.966  77.5841 "1990025I"  "2019-11-18 12:53:11.984+05:30"
13.0007 77.6128 "1990074I"  "2019-11-18 12:53:11.522+05:30"
12.9567 77.68   "1990088I"  "2019-11-18 12:53:10.663+05:30"
12.9714 77.58   "1990123I"  "2019-11-18 12:53:10.45+05:30"
0       0       "1980020I"  "2019-11-18 12:53:10.151+05:30"
12.966  77.5841 "1990025I"  "2019-11-18 12:53:10.001+05:30"
13.0952 77.5949 "M10299171990132I"  "2019-11-18 12:53:09.922+05:30"
12.9936 77.7478 "1990006I"  "2019-11-18 12:53:08.718+05:30"

3 个答案:

答案 0 :(得分:1)

SELECT DISTINCT ON (bin) *
FROM public.battery_data
ORDER BY bin, created_date DESC

答案 1 :(得分:0)

在内部查询和外部查询中,您都需要按bin进行过滤:

select bd.*
from battery_data bd
where bd.bin = '1990051I' and
      bd.tcu_date_ist = (select max(bd2.tcu_date_ist) 
                         from battery_data bd2
                         where bd2.bin = bd.bin
                        );

或者,如果您只想使用order bylimit

select bd.*
from battery_data bd
where bd.bin = '1990051I'
order by bd.tcu_date_ist desc
limit 1;

答案 2 :(得分:0)

这不是吗?

select * from battery_data where tcu_date_ist in(
SELECT MAX(tcu_date_ist) FROM battery_data group by bin);
相关问题