2016-12-15 103 views
2

这是我的第一选择查询连接两个选择查询PostgreSQL中

SELECT date_trunc('hour',start_time) as time , extract(day from start_time) as day ,start_zone_id as zone_id, count(*) as booking_trips 
    FROM public.trip_information_september where trip_type='{BOOKING}' group by date_trunc('hour',start_time), start_zone_id ,extract(day from start_time) ORDER BY time,start_zone_id 

这是我的第二选择查询

SELECT date_trunc('hour',start_time) as time , extract(day from start_time) as day ,start_zone_id as zone_id, count(*) as booking_trips 
     FROM public.trip_information_september where trip_type='{NO_INFO}' group by date_trunc('hour',start_time), start_zone_id ,extract(day from start_time) ORDER BY time,start_zone_id 

所以,当我加入这两个

select * from 
    (SELECT date_trunc('hour',start_time) as time , extract(day from start_time) as day ,start_zone_id as zone_id, count(*) as booking_trips 
    FROM public.trip_information_september where trip_type='{BOOKING}' group by date_trunc('hour',start_time), start_zone_id ,extract(day from start_time) ORDER BY time,start_zone_id)A 
    INNER JOIN 
    (SELECT date_trunc('hour',start_time) as time,extract(day from start_time) as day, start_zone_id as zone_id, count(*) as normal_trips 
    FROM public.trip_information_september where trip_type='{NORMAL}' group by date_trunc('hour',start_time), start_zone_id ,extract(day from start_time) ORDER BY time,start_zone_id) B 

    ON A.time=B.time and A.zone_id=B.zone_id and A.day=B.day limit 100 ; 

我得到的时间,日期,zone_id两次而不是加入的时间。 任何帮助表示赞赏。

回答

1

这是不是很令人惊讶的,因为你的子查询连接被包裹在其中做SELECT *你想要的东西像

SELECT A.time, A.day, A.zone_id, booking_trips /*, ... REST OF THE REQUIRED COLUMNS */ FROM 

(SELECT date_trunc('hour',start_time) as time , extract(day from start_time) as day ,start_zone_id as zone_id, count(*) as booking_trips 
    FROM public.trip_information_september where trip_type='{BOOKING}' group by date_trunc('hour',start_time), start_zone_id ,extract(day from start_time) ORDER BY time,start_zone_id)A 
    INNER JOIN 
    (SELECT date_trunc('hour',start_time) as time,extract(day from start_time) as day, start_zone_id as zone_id, count(*) as normal_trips 
    FROM public.trip_information_september where trip_type='{NORMAL}' group by date_trunc('hour',start_time), start_zone_id ,extract(day from start_time) ORDER BY time,start_zone_id) B 

    ON A.time=B.time and A.zone_id=B.zone_id and A.day=B.day limit 100 ; 
+0

现在,我得到我在那里wrong.thanks很多 – RKR

+0

欢迎你的外部查询,高兴有帮助 – e4c5