Currently I am using this: SELECT ident,COUNT(*) FROM sales GROUP BY ident order by COUNT(*) DESC LIMIT 3
.
I use that to group each ident from sales table, and count the number of rows for each ident, and limit this to 3 rows. Now I want to only select the rows that were added the current month.
This is how the table looks like, sales table:
| ID | ident | prdnr | transfer |
| 1 | HD762 | 7362781 | 2020-08-10 16:25:26 |
| 2 | JJ313 | 4563456 | 2020-08-08 16:25:26 |
| 3 | HD762 | 4363453 | 2020-08-08 16:25:26 |
| 4 | JJ313 | 2326256 | 2020-08-08 16:25:26 |
| 5 | HD762 | 8356345 | 2020-08-07 16:25:26 |
| 6 | JJ844 | 3473563 | 2020-08-07 16:25:26 |
I think this should be the correct query:
SELECT ident,COUNT(*) FROM sales WHERE MONTH(transfer) = MONTH(CURRENT_DATE()) AND YEAR(transfer) = YEAR(CURRENT_DATE()) GROUP BY ident order by COUNT(*) DESC LIMIT 3
Somehow this does not gives me the correct count. What am I doing wrong?
Based on your requirement, a simple way is getting the MySQL current time and subtract a month to get the values
The code:-
SELECT ident,COUNT( ) FROM sales WHERE transfer > date_sub(now(), interval 1 month) GROUP BY ident order by COUNT( ) DESC LIMIT 3;
The output from the query
HD762 3
JJ313 2
JJ844 1
Please let me know if this is the expected result you're looking for.
Reference:- https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.