Is there a nice way in MySQL (older version) to replicate the SQL Server function ROW_NUMBER()?
I am trying to find 2 most used categories with their usage count per day using this query but ROW_NUMBER and PARTITION are not available in my old version of SQL.
Select a.*
FROM
( SELECT
dDay,
category,
COUNT(*) as CountOfCategory,
ROW_NUMBER() OVER (PARTITION BY dDay ORDER BY COUNT(*) DESC) AS intRow
FROM Table1
GROUP BY category, dDate ) as a
WHERE intRow <= 2
ORDER BY dDay,
intRow;
There is a variation of this question here but COUNT(*) in my query does not seem to fit the solutions there.
Input
| dDay | Category |
|---|---|
| 1 | car |
| 2 | bike |
| 2 | car |
| 1 | car |
| 3 | truck |
| 1 | bike |
| 1 | car |
| 3 | car |
| 3 | car |
| 2 | bike |
| 1 | bike |
| 2 | truck |
| 2 | truck |
| 2 | truck |
Expected Output: Top 2 categories (with their total count) per day
| dDay | Category | CountOfCategory |
|---|---|---|
| 1 | car | 3 |
| 1 | bike | 2 |
| 2 | bike | 2 |
| 2 | truck | 2 |
| 3 | car | 2 |
| 3 | truck | 1 |