sql - Get the count of multiple tables broken up by hour -
i have 2 tables, queue , tracker counts yesterday. each table has insert_date field indicates when row inserted.
right now, using 2 queries data. query using count tracker
select to_char(trunc(insert_date,'hh'),'yyyy-mm-dd hh24:mi:ss') hour_inserted, count(*) records_inserted tracker insert_date >= trunc(sysdate - 1) , insert_date < trunc(sysdate) group trunc(insert_date,'hh') order hour_inserted i use same query count queue, switch table name.
select to_char(trunc(insert_date,'hh'),'yyyy-mm-dd hh24:mi:ss') hour_inserted, count(*) records_inserted queue insert_date >= trunc(sysdate - 1) , insert_date < trunc(sysdate) group trunc(insert_date,'hh') order hour_inserted i condense down 1 query, instead of having run 2 seperate ones.
what new query like?
ideally, result of query this:
hour_inserted | queue_records | tracker_records ---------------------------------------------------- 2014-03-12 00:00:00 56 102 2014-03-12 01:00:00 80 200
if want combine output, need union:
select 'tracker' data_type, to_char(trunc(insert_date, 'hh'), 'yyyy-mm-dd hh24:mi:ss') hour_inserted, count(*) records_inserted tracker insert_date >= trunc(sysdate - 1) , insert_date < trunc(sysdate) group trunc(insert_date, 'hh') union select 'queue' data_type, to_char(trunc(insert_date, 'hh'), 'yyyy-mm-dd hh24:mi:ss') hour_inserted, count(*) records_inserted queue insert_date >= trunc(sysdate - 1) , insert_date < trunc(sysdate) group trunc(insert_date, 'hh') order data_type, hour_inserted update: due updated requirements there query:
select coalesce(tracker.hour_inserted, queue.hour_inserted) hour_inserted, tracker.records_inserted tracker_records_inserted, queue.records_inserted queue_records_inserted (select to_char(trunc(insert_date, 'hh'), 'yyyy-mm-dd hh24:mi:ss') hour_inserted, count(*) records_inserted tracker insert_date >= trunc(sysdate - 1) , insert_date < trunc(sysdate) group trunc(insert_date, 'hh')) tracker full outer join (select to_char(trunc(insert_date, 'hh'), 'yyyy-mm-dd hh24:mi:ss') hour_inserted, count(*) records_inserted queue insert_date >= trunc(sysdate - 1) , insert_date < trunc(sysdate) group trunc(insert_date, 'hh')) queue on tracker.hour_inserted = queue.hour_inserted order 1;
Comments
Post a Comment