The table I have is this:
| C1 | C2 | userid |
|---|---|---|
| 1 | 50 | 100 |
| 2 | 40 | 101 |
| 3 | 30 | 102 |
| 4 | 20 | 103 |
| 5 | 10 | 104 |
I need the userid and count() userid WHERE (Condition satisfied)
by input
userid IN (100,101,102,103,104,105)
The condition is :
C1 > (input userid's C1) and C2 < (input userid's C2)
I need it like this :
| userid | Count |
|---|---|
| 100 | 4 |
| 101 | 3 |
| 102 | 2 |
| 103 | 1 |
CodePudding user response:
Join and aggregate as the following:
SELECT D.userid, COUNT(*) cnt
FROM table_name T JOIN table_name D
ON T.C1 > D.C1 AND T.C2 < D.C2
WHERE D.userid IN (100,101,102,103,104,105)
GROUP BY D.userid
ORDER BY D.userid
See a demo.
