EN
MySQL - group rows by year
0 points
In this article, we would like to show you how to group rows by year in MySQL.
Quick solution:
xxxxxxxxxx
1
SELECT
2
DATE_FORMAT(`datetime_column_name`, '%Y') as `alias_name`
3
FROM `table_name`
4
GROUP BY YEAR(`datetime_column_name`);
To show how to group rows by year, we will use the following table:

Note:
At the end of this article you can find database preparation SQL queries.
In this example, we will display all the years from the users
table grouped, so we don't get any duplicates.
Query:
xxxxxxxxxx
1
SELECT
2
DATE_FORMAT(`registration_time`, '%Y') as `date`
3
FROM `users`
4
GROUP BY YEAR(`registration_time`) DESC;
Result:

Note:
Go to this article to read how to count rows per year.
create_tables.sql
file:
xxxxxxxxxx
1
CREATE TABLE `users` (
2
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
3
`username` VARCHAR(50) NOT NULL,
4
`registration_time` DATETIME NOT NULL,
5
PRIMARY KEY (`id`)
6
);
insert_data.sql
file:
xxxxxxxxxx
1
INSERT INTO `users`
2
(`username`, `registration_time`)
3
VALUES
4
('Tom', '2021-01-01 11:41:31'),
5
('Chris','2021-02-02 11:42:45'),
6
('Jack','2021-03-03 15:13:39'),
7
('Kim','2021-03-03 15:24:51'),
8
('Marco','2020-03-03 22:35:38'),
9
('Kate','2019-04-04 22:46:51'),
10
('Nam','2019-04-04 22:57:37');