Mysql統計查詢

1、單字段分組查詢(group by)

1.1、查詢出每個部門的人數:

SELECT
	字段名 AS '部門編號',
	COUNT(字段名) AS '人數'
FROM
	表名
GROUP BY
	字段名

 1.2查詢每個部門的部門名稱、部門人數、平均工資 :

分析:

由於要統計部門名稱所以要和部門表進行關聯,既然要統計部門就要以部門表爲主,所以要右連接,在算平均值的可能會出現小數點多的情況,所以用了round函數保留了兩位小數,由於40部門下沒有人,也就沒有平均工資所以會出現空的情況,用IFUNLL函數,如果爲空顯示0;

 

SELECT
	d.DNAME AS '部門名稱',
	COUNT(e.DEPTNO) AS '部門人數',
  IFNULL(ROUND(AVG(e.SAL),2),0) AS '平均工資'
FROM
	emp e  -- 員工表
RIGHT JOIN
	dept d   -- 部門表
ON(e.DEPTNO = d.DEPTNO)
GROUP BY
	e.DEPTNO;

2、多字段分組查詢:

 2.1查詢每個部門的部門編號、部門名稱、部門人數,平均工資:

SELECT
  d.DEPTNO AS '部門編號',
	d.DNAME AS '部門名稱',
	COUNT(e.DEPTNO) AS '部門人數',
  IFNULL(ROUND(AVG(e.SAL),2),0) AS '平均工資'
FROM
	emp e
RIGHT JOIN
	dept d
ON(e.DEPTNO = d.DEPTNO)
GROUP BY
	e.DEPTNO,d.DEPTNO;

3、HAVING:

       在很多時候往往需要對分組之後的數據進行再次過濾,例如:要求部門人數超過5個人的部門信息,這樣的操作首先要按照部門進行分組統計,而後子通過統計結果進行數據過濾,想要實現這樣的功能,只能通過HAVING語句來完成。

having一般和group一起使用,分組後的兩次篩選

3.1、查詢出所有平均工資大於2000的部門信息、平均工資、員工人數。 

SELECT
	JOB AS '職位',
	AVG(SAL) AS '平均工資',
	COUNT(JOB) AS '員工人數'
FROM
	emp
GROUP BY
	JOB
HAVING
	AVG(SAL) > 2000;

3.2求出部門人數大於2人的部門,要求顯示部門名稱、部門編號、部門人數。

分析:先找出人數大於2人的部門。再按照要求顯示:

SELECT
	d.DNAME AS '部門名稱',
	d.DEPTNO AS '部門編號',
	COUNT(e.DEPTNO) AS '部門人數'
FROM
	emp e
RIGHT JOIN dept d ON (e.DEPTNO = d.DEPTNO)
GROUP BY
	d.DEPTNO
HAVING COUNT(e.DEPTNO);

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章