EDUCBA Logo

EDUCBA

MENUMENU
  • Explore
    • EDUCBA Pro
    • PRO Bundles
    • All Courses
    • All Specializations
  • Blog
  • Enterprise
  • Free Courses
  • All Courses
  • All Specializations
  • Log in
  • Sign Up
Home Data Science Data Science Tutorials MySQL Tutorial MySQL GROUP BY month
 

MySQL GROUP BY month

Aanchal Sharma
Article byAanchal Sharma
EDUCBA
Reviewed byRavi Rathore

Updated May 26, 2023

MySQL GROUP BY month

 

 

Introduction to MySQL GROUP BY month

MySQL GROUP BY is a MySQL clause for grouping a set of table rows into subgroups based on values of expressions or columns. Thus, the GROUP BY clause reduces the number of table rows in the output set. The clause returns a single row for every group specified in the query. The GROUP BY clause is a non-compulsory clause of the SELECT statement in MySQL, used together in the query. In addition, the GROUP BY CLAUSE can be defined by applying certain functions like aggregate functions or date functions. With this implementation, we can group the table rows using month or year by applying DATE_FORMAT() in MySQL, adding to the GROUP BY clause to display the result set grouping according to the month part of the DATE function.

Watch our Demo Courses and Videos

Valuation, Hadoop, Excel, Mobile Apps, Web Development & many more.

Syntax

Syntax structure for using the GROUP BY Month clause in MySQL:

SELECT DATE_FORMAT(ColumnName, '%m-%Y') FROM TableName
GROUP BY MONTH (ColumnName) , YEAR (ColumnName) DESC;

To display the result set using the GROUP BY Month clause, you can use the following syntax, which is described as follows:

  • The MySQL operator DATE_FORMAT() is used here to be easy enough to group the timestamp, date, or datetime table column implementing any format your result needs to show in the query section.
  • TableName denotes the particular database table involved in the GROUP BY Month clause.
  • ColumnName defines the table column you want to group using the month or year formats. The column data type should have either DATETIME, TIMESTAMP, or DATE so that while using the GROUP BY Month clause, the month part can be properly extracted based on the column from the table data in the database.
  • We can even sort the result set or date column values using ASC or DESC options.

How GROUP BY month works in MySQL?

  • In MySQL, the SELECT statement is often applied to fetch all the records that match each other from the database tables based on several clauses used in the query statements.
  • It helps summarize the type of data we want to retrieve from the tables based on any table field, column values, or aggregate functions used, like AVG, SUM, MIN, MAX, etc., in MySQL. Other functions like the DATE function with their respective formats are also used.
  • The GROUP BY clause and SELECT query display the result rows in grouping order with the help of column and data type in MySQL. Generally, the GROUP BY clause should appear in MySQL query after the two clauses, FROM and WHERE, to specify the grouping column with function.
  • Usually, the MONTH() function is defined to identify every month, and aggregate functions help to show the calculative values of sum, average, minimum, maximum, and so on.
  • Thus, we will use GROUP BY Month to fetch the table records in the output set by grouping the column with the month part of the Date function provided in the DATE_FORMAT() structure.

Examples of MySQL GROUP BY month

Given below are the examples mentioned :

Example #1

Simple Example using GROUP BY Month with DATE_FORMAT().

To recognize the above concept of the GROUP BY Month clause, let us build up a table to show the rows results from the table grouped by month part of the DATE_FORMAT().

Suppose we have the following query code to create a table.

Code:

CREATE TABLE DemoGroupMonth(Group_ID INT PRIMARY KEY, Due_Date DATE);

Again, we will enter the sample records in the table using the following statement.

Code:

INSERT INTO DemoGroupMonth VALUES(1,NOW());
INSERT INTO DemoGroupMonth VALUES(2,DATE_ADD(NOW(), INTERVAL 3 year));
INSERT INTO DemoGroupMonth VALUES(3,DATE_ADD(NOW(), INTERVAL -3 year));
INSERT INTO DemoGroupMonth VALUES(4,DATE_ADD(NOW(), INTERVAL 2 year));
INSERT INTO DemoGroupMonth VALUES(5,DATE_ADD(NOW(), INTERVAL -2 year));
INSERT INTO DemoGroupMonth VALUES(6,DATE_ADD(NOW(), INTERVAL 1 year));

Now, we will view all the records from this table DemoGroupMonth by applying the following SELECT statement.

Code:

SELECT * FROM DemoGroupMonth;

Output:

with DATE_FORMAT()

After this, we will code for retrieving the result set with GROUP BY Month.

Code:

SELECT DATE_FORMAT(Due_Date , '%m') AS Month_Group FROM DemoGroupMonth GROUP BY MONTH(Due_Date) DESC;

The succeeding output produces the month grouped by implementing GROUP BY.

Output:

for retrieving the result set

As you can see, the result set displays the DATE column values by grouping them with the month and arranging them in descending order.

Suppose we want to count the number of records in the table by determining or calculating it using a specific period such as a Day, Month, or Year part of the DATE function. In this case, the column will have a DATETIME, DATE, or TIMESTAMP field data type. The simple query will be as follows.

Code:

SELECT COUNT(Group_ID) FROM demogroupmonth WHERE YEAR(Due_Date)='2023' GROUP BY MONTH(Due_Date);

Output:

MySQL GROUP BY month 3

For this, we again inserted some rows in the table with a year equal to 2023 to make the result properly run as.

Code:

select * from demogroupmonth;

Output:

MySQL GROUP BY month 4

Example #2

Example using GROUP BY Month with the same date.

If we want group table rows added on the identical date or day, then we will query the count of such grouped rows as follows with GROUP BY Month.

Code:

Select COUNT(*), DATE_FORMAT(Due_Date,'%m') as Month_Created_At FROM demogroupmonth GROUP BY Month_Created_At;

Output:

with same date

Example #3

Example using GROUP BY Month for Employee month-wise data.

Assume that we have a table in our database as Employee, which includes fields such as Person_ID, Employee_Name, Salary, and JoinDate.

Code:

select * from employee

Output:

MySQL GROUP BY month 6

Here the JoinDate column of the table contains DATE data type values to group rows by month.

Code:

SELECT Employee_Name, Salary, DATE_FORMAT(JoinDate , '%m') AS Emp_Month_Group FROM employee GROUP BY MONTH(JoinDate) ASC;

Output:

MySQL GROUP BY month 7

We can query any employee data to find month-wise records from the Employees table in the database implementing the MySQL GROUP BY month clause.

Conclusion

The MySQL GROUP BY month clause is responsible for grouping to provide a set of rows grouped by the EXTRACT function that permits abstracting parts of a date value like month, year, day, or time. The MySQL GROUP BY month clause helps find out the monthly report in sales database tables to produce the systematic data of the employees.

Recommended Articles

We hope that this EDUCBA information on “MySQL GROUP BY month” was beneficial to you. You can view EDUCBA’s recommended articles for more information.

  1. MySQL AUTO_INCREMENT
  2. Working with MySQL REINDEX
  3. MySQL Admin Tool
  4. MySQL CTE
Primary Sidebar
Footer
Follow us!
  • EDUCBA FacebookEDUCBA TwitterEDUCBA LinkedINEDUCBA Instagram
  • EDUCBA YoutubeEDUCBA CourseraEDUCBA Udemy
APPS
EDUCBA Android AppEDUCBA iOS App
Blog
  • Blog
  • Free Tutorials
  • About us
  • Contact us
  • Log in
Courses
  • Enterprise Solutions
  • Free Courses
  • Explore Programs
  • All Courses
  • All in One Bundles
  • Sign up
Email
  • [email protected]

ISO 10004:2018 & ISO 9001:2015 Certified

© 2025 - EDUCBA. ALL RIGHTS RESERVED. THE CERTIFICATION NAMES ARE THE TRADEMARKS OF THEIR RESPECTIVE OWNERS.

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you

Loading . . .
Quiz
Question:

Answer:

Quiz Result
Total QuestionsCorrect AnswersWrong AnswersPercentage

Explore 1000+ varieties of Mock tests View more

EDUCBA
Free Data Science Course

Hadoop, Data Science, Statistics & others

By continuing above step, you agree to our Terms of Use and Privacy Policy.
*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA Login

Forgot Password?

🚀 Limited Time Offer! - 🎁 ENROLL NOW