I have a simple table which looks like this:
x
| yyyy_mm_dd | id | name | count |
|------------|----|----------|-------|
| 2020-10-31 | 1 | price | 90 |
| 2020-10-31 | 1 | restrict | 90 |
| 2020-10-31 | 1 | checkin | 90 |
| 2020-10-31 | 2 | price | 322 |
| 2020-10-31 | 2 | restrict | 322 |
| 2020-10-31 | 2 | checkin | 311 |
How can I construct a query that will return the id
s that do not have the same count for each name
? So using the above data, id
2 would be returned as not all name
counts are equal.
It would be great if it’s possible without hardcoding each name individually as there are a lot in the real dataset.
Advertisement
Answer
A simple method is aggregation:
select name
from t
group by name
having min(count) <> max(count);
If you want to be sure there are three rows, then add and count(*) = 3
.