I have a table which records the number of times a user logs into a page, but I am trying to filter out where the user has logged in at least twice throughout the week
Here is the table below
| User | Monday | Tuesday | Wednesday | Thursday | Friday | Total |
|---|---|---|---|---|---|---|
| A | 1 | 3 | 4 | 6 | 1 | 15 |
| B | 0 | 0 | 20 | 0 | 0 | 20 |
| C | 18 | 1 | 0 | 18 | 1 | 38 |
| D | 0 | 2 | 0 | 0 | 0 | 2 |
Here is my expected output
| User | Monday | Tuesday | Wednesday | Thursday | Friday | Total |
|---|---|---|---|---|---|---|
| A | 1 | 3 | 4 | 6 | 1 | 15 |
| C | 18 | 1 | 0 | 18 | 1 | 38 |
>Solution :
Use a where clause case expression to evaluate each day for value > 0 and then sum the total >=2. Each day must be evaluated on its own merit so we can not do simple math and divide or something. Leaving us to evaluate each day independently.
SELECT *
FROM TABLENAME
WHERE case when Monday > 0 then 1 else 0 end
+ case when Tuesday > 0 then 1 else 0 end
+ case when Wednesday > 0 then 1 else 0 end
+ case when Thrusday > 0 then 1 else 0 end
+ case when Friday > 0 then 1 else 0 end >=2