简体   繁体   中英

Multiple Where, AND, AS syntax in BigQuery

I have fitness data exported from my smartwatch. It has columns Date, Step_count, and others (which are not required now).

I am trying to organize my activity based on steps as very low, low, moderate, high and very high.

My syntaxes are:

for very low activity:

select Date, Step_count as very_low_physical_activity from my-second-project-370721.my_activity_2022.my_activity where Step_count<1000

for low activity:

select Date, Step_count as low_physical_activity from my-second-project-370721.my_activity_2022.my_activity where Step_count BETWEEN 1000 and 2500

and so on for moderate (2500-5000), high (5000-10000) and very high (>10000)

How do I join these queries so that I get all the activity reports in one go?

I tried:

(select Date, Step_count as very_low_physical_activity from my-second-project-370721.my_activity_2022.my_activity where Step_count<1000)

UNION ALL

(select Date, Step_count as low_physical_activity from my-second-project-370721.my_activity_2022.my_activity where Step_count BETWEEN 1000 and 2500)

order_by Date

but am getting results with column as very_low_physical_activity where steps between 0 - 2500 are populated.

Using CASE is a better approach here instead of the UNION ALL

select 
    Date, 
    Step_count,
    case 
        when Step_count < 1000 THEN  'very_low_physical_activity'
        when Step_count >= 1000 and Step_count < 2500 THEN 'low_physical_activity'
        when Step_count >= 2500 and Step_count < 5000 THEN 'moderate_physical_activity'
        when Step_count >= 5000 and Step_count < 10000 THEN 'high_physical_activity'
        else 'very_high_physical_activity'
    end as Physical_activity
from my-second-project-370721.my_activity_2022.my_activity

Showing in multiple columns:

select 
    Date, 
    Step_count,
    case when step_count < 1000 then step_count end as very_low_physical_activity,
    case when step_count >= 1000 and step_count < 2500 then step_count end as low_physical_activity,
    case when Step_count >= 2500 and Step_count < 5000 then step_count end as moderate_physical_activity,
    case when Step_count >= 5000 and Step_count < 10000 then step_count end as high_physical_activity,
    case when step_count >= 1000 then step_count end as very_high_physical_activity
from `my-second-project-370721.my_activity_2022.my_activity`

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM