diff --git a/erpnext/config/hr.py b/erpnext/config/hr.py
index 9e893c0..cd2ddd9 100644
--- a/erpnext/config/hr.py
+++ b/erpnext/config/hr.py
@@ -397,5 +397,16 @@
 					"youtube_id": "5SZHJF--ZFY"
 				}
 			]
+		},
+		{
+			"label": _("Analytics"),
+			"items": [
+				{
+					"type": "report",
+					"is_query_report": True,
+					"name": "Department Analytics",
+					"doctype": "Employee"
+				},
+			]
 		}
 	]
diff --git a/erpnext/hr/report/department_analytics/__init__.py b/erpnext/hr/report/department_analytics/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/hr/report/department_analytics/__init__.py
diff --git a/erpnext/hr/report/department_analytics/department_analytics.js b/erpnext/hr/report/department_analytics/department_analytics.js
new file mode 100644
index 0000000..a0b6fc7
--- /dev/null
+++ b/erpnext/hr/report/department_analytics/department_analytics.js
@@ -0,0 +1,5 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.query_reports["Department Analytics"] = {
+};
\ No newline at end of file
diff --git a/erpnext/hr/report/department_analytics/department_analytics.json b/erpnext/hr/report/department_analytics/department_analytics.json
new file mode 100644
index 0000000..1e26b33
--- /dev/null
+++ b/erpnext/hr/report/department_analytics/department_analytics.json
@@ -0,0 +1,28 @@
+{
+ "add_total_row": 0, 
+ "creation": "2018-05-15 15:37:20.883263", 
+ "disabled": 0, 
+ "docstatus": 0, 
+ "doctype": "Report", 
+ "idx": 0, 
+ "is_standard": "Yes", 
+ "modified": "2018-05-15 17:19:32.934321", 
+ "modified_by": "Administrator", 
+ "module": "HR", 
+ "name": "Department Analytics", 
+ "owner": "Administrator", 
+ "ref_doctype": "Employee", 
+ "report_name": "Department Analytics", 
+ "report_type": "Script Report", 
+ "roles": [
+  {
+   "role": "Employee"
+  }, 
+  {
+   "role": "HR User"
+  }, 
+  {
+   "role": "HR Manager"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/hr/report/department_analytics/department_analytics.py b/erpnext/hr/report/department_analytics/department_analytics.py
new file mode 100644
index 0000000..c4a9030
--- /dev/null
+++ b/erpnext/hr/report/department_analytics/department_analytics.py
@@ -0,0 +1,60 @@
+# Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe import _
+
+def execute(filters=None):
+	if not filters: filters = {}
+	columns = get_columns()
+	employees = get_employees(filters)
+	departments_result = get_department(filters)
+	departments = []
+	if departments_result:
+		for department in departments_result:
+			departments.append(department)
+	chart = get_chart_data(departments,employees)
+	return columns, employees, None, chart
+
+def get_columns():
+	return [
+		_("Employee") + ":Link/Employee:120", _("Name") + ":Data:200", _("Date of Birth")+ ":Date:100",
+		_("Branch") + ":Link/Branch:120", _("Department") + ":Link/Department:120",
+		_("Designation") + ":Link/Designation:120", _("Gender") + "::60", _("Company") + ":Link/Company:120"
+	]
+
+def get_conditions(filters):
+	conditions = ""
+	if filters.get("department"): conditions += " and department = '%s'" % \
+		filters["department"].replace("'", "\\'")
+	return conditions
+
+def get_employees(filters):
+	conditions = get_conditions(filters)
+	return frappe.db.sql("""select name, employee_name, date_of_birth,
+	branch, department, designation,
+	gender, company from `tabEmployee` where status = 'Active' %s""" % conditions, as_list=1)
+
+def get_department(filters):
+	return frappe.db.sql("""select name from `tabDepartment`""" , as_list=1)
+	
+def get_chart_data(departments,employees):
+	if not departments:
+		departments = []
+	datasets = []
+	for department in departments:
+		if department:
+			total_employee = frappe.db.sql("""select count(*) from \
+				`tabEmployee` where \
+				department = %s""" ,(department[0]), as_list=1)
+			datasets.append(total_employee[0][0])
+	chart = {
+		"data": {
+			'labels': departments,
+			'datasets': [{'name': 'Employees','values': datasets}]
+		}
+	}
+	chart["type"] = "bar"
+	return chart
+
