SQL Query to Make Month Wise Report
A month-wise report is essential for analysing data trends, identifying patterns, and making informed decisions based on monthly data. We will cover everything from the basics of SQL functions to advanced techniques, providing detailed explanations and practical examples.
In this article, we will explore how to create a month-wise report using SQL queries. We will have a comprehensive understanding of how to write and implement SQL queries to generate such reports effectively.
What is a Month-Wise Report?
A month-wise report organises data based on months, making it easier to understand how specific metrics or events vary over time. For instance, in business operations, it can be used to track employee joinings, sales figures, or revenue growth month by month.
Why is a Month-Wise Report Important?
- Trend Analysis: It helps in understanding trends over time.
- Decision-Making: Provides insights for monthly planning and strategy.
- Performance Monitoring: Evaluates progress and performance metrics.
DATENAME()
Function
To generate a month-wise report, we use the DATENAME()
function in SQL. This function extracts a specific part of a date and returns it as a string value.
Syntax
DATENAME( required part of date,date)
Key Terms
- year,yyyy,yy: Year
- month,mm,m : Month
- day,dy,y: Day. and another part of DateTime.
Example of Generating Month Wise Report
For the purpose of implementing the query to find the month-wise reports. We will create a database “SAMPLE” and we will create a table “NEWJOINEE” in the database called “SAMPLE“. We will follow the below steps to implement this Query.
Query:
CREATE TABLE NEWJOINEE
( EMPNAME VARCHAR(25) NOT NULL,
EMPCONTACT BIGINT,
DATEOFJOIN DATE NOT NULL,
DESIGNATION VARCHAR(20)
);
INSERT INTO NEWJOINEE
VALUES ('VISHAL',9193458625,'12-JAN-2021','SYSTEM ENGINEER'),
('RAM',7856958725,'22-JAN-2021','MANAGER'),
('VIPIN',91458458625,'25-JAN-2021','SYSTEM ENGINEER'),
('VINOD',9759554664,'28-JAN-2021','MANAGER'),
('AKASH',7500554664,'18-JAN-2021','EXECUTIVE'),
('RAJ',7856958625,'02-FEB-2021','MANAGER'),
('AJAY',9756644159,'20-FEB-2021','SYSTEM ENGINEER'),
('SHYAM',919347625,'12-FEB-2021','EXECUTIVE'),
('VIPIN',91458458625,'25-FEB-2021','SYSTEM ENGINEER'),
('VIJAY',7858458625,'25-FEB-2021','EXECUTIVE'),
('VIKASH',9759554664,'28-FEB-2021','SYSTEM ENGINEER'),
('VIVEK',9193458625,'12-MAR-2021','MANAGER'),
('ANUJ',91458458625,'25-MAR-2021','EXECUTIVE'),
('AKASH',7500554664,'18-MAR-2021','MANAGER'),
('RAKESH',7845758725,'22-MAR-2021','EXECUTIVE');
Select * FROM NEWJOINEE;
Output
Month-wise report query
To generate a month-wise report, we use the DATENAME()
and GROUP BY
functions. These functions allow us to group data by month and extract the name of the month for better readability. This approach simplifies monthly trend analysis and improves reporting clarity.
Query:
SELECT
MAX(DATENAME(MM, DATEOFJOIN)) AS JOININGMONTH,
COUNT(1) AS "TOTALEMP. JOIN"
FROM NEWJOINEE
GROUP BY MONTH(DATEOFJOIN);
Output

Month wise report
Explanation:
- DATENAME(MM, DATEOFJOIN): Extracts the month name from the
DATEOFJOIN
column. - COUNT(1): Counts the number of employees who joined in each month.
- GROUP BY MONTH(DATEOFJOIN): Groups the data by the month of the
DATEOFJOIN
column.
Conclusion
Creating a month-wise report in SQL is an invaluable skill for data analysis. Using functions like DATENAME()
and GROUP BY
, we can efficiently organise and analyse our data to uncover trends and insights. This article provided a step-by-step guide with practical examples to help you master this concept.
Whether we are managing employees, analysing sales data, or monitoring events, SQL month-wise reports are a powerful tool in our data toolkit. Start implementing these queries today and transform our data analysis process.
FAQs
Can I generate reports for other intervals (e.g., yearly)?
Yes, you can group data by other intervals such as years or weeks using the appropriate SQL functions (
YEAR()
,WEEK()
).
What happens if the DATEOFJOIN
column has null values?
Rows with null values in
DATEOFJOIN
will be excluded from the report.
How can I handle performance issues with large datasets?
Optimise your database by indexing the date columns and limiting the query scope using filters.