Given a table:
userid | activity | location |
---|---|---|
1 | RoomC | 1 |
2 | RoomB | 1 |
2 | RoomB | 2 |
2 | RoomC | 4 |
3 | RoomC | 1 |
3 | RoomC | 5 |
3 | RoomC | 1 |
3 | RoomC | 5 |
4 | RoomC | 1 |
4 | RoomC | 5 |
Im trying to select only the rows where a userid
shows up more then X number of times, lets say >2
, so in the above database, only rows for userid 2 and 3 would be selected
Would something like this work?
SELECT *, count(*)
FROM marktable
GROUP BY userid
HAVING count(*) > 1
CodePudding user response:
This modified version of your query:
SELECT userid
FROM marktable
GROUP BY userid
HAVING COUNT(*) > 2
returns all the users that appear more than 2 times in the table.
Use it with the operator IN
:
SELECT *
FROM marktable
WHERE userid IN (
SELECT userid
FROM marktable
GROUP BY userid
HAVING COUNT(*) > 2
);
See the demo.