table1
person | zipcode | timestamp | event | device
--------------------------------------------------|--------|------
amar | 11111 | 2016-09-28 20:05:03.001 | email | phone
akbar | 11111 | 2016-09-28 20:05:03.001 | email | phone
antony | 11111 | 2016-09-28 20:07:03.001 | chat | pc
amar | 11111 | 2016-09-28 20:08:03.001 | email | phone
amar | 11111 | 2016-09-28 20:08:03.001 | chat | phone
amar | 22222 | 2016-09-28 20:09:03.001 | email | phone
akbar | 22222 | 2016-09-28 20:10:03.001 | email | phone
antony | 22222 | 2016-09-28 20:10:03.001 | chat | phone
amar | 11111 | 2016-09-28 21:05:03.001 | email | phone
akbar | 11111 | 2016-09-28 21:05:03.001 | email | phone
antony | 11111 | 2016-09-28 21:07:03.001 | chat | phone
Output desired -
records
for all zipcodes for all hours where records with pc device is present
output table for above example
The only qualifying zipcode, timestamp_hour combination is 11111, 2016-09-28 20
person | zipcode | timestamp | event | device
--------------------------------------------------|--------|------
amar | 11111 | 2016-09-28 20:05:03.001 | email | phone
akbar | 11111 | 2016-09-28 20:05:03.001 | email | phone
antony | 11111 | 2016-09-28 20:07:03.001 | chat | pc
amar | 11111 | 2016-09-28 20:08:03.001 | email | phone
amar | 11111 | 2016-09-28 20:08:03.001 | chat | phone
pseudocode
- create temp table of
zipcode, timestamp_hourcombination with filterdevice='pc'to get qualifyingzipcode, timestamp_hourlist - apply #1 as a filter with
table1
For #1 above, the code i've is as below , need help with #2
with zipcode_hour as (
select zipcode, date_trunc(`hour`, timestamp) as timestamp_hour
from table1
where device = 'pc'
group by zipcode, timestamp_hour
)