一個關於檢索薪水高於部門平均值的sql文

DROP TABLE IF EXISTS `EMPLOYEESALARY`

CREATE TABLE `EMPLOYEESALARY` (
`ID` INT(5) NOT NULL AUTO_INCREMENT COMMENT 'PRIMARY KEY',
`NAME` VARCHAR(20) NOT NULL,
`SALARY`  FLOAT(8),
`DEPARTMENT` VARCHAR(20),
PRIMARY KEY(`ID`)
)ENGINE MYISAM DEFAULT CHARSET=utf8 COMMENT 'EMPLOYEE TABLE';

SELECT `ID`,`NAME` FROM `EMPLOYEESALARY` AS TABLE1
LEFT JOIN
( SELECT `DEPARTMENT`,AVG(`SALARY`) AS SALARY FROM `EMPLOYEESALARY` GROUP BY `DEPARTMENT` ) AS TABLE2
ON TABLE1.`DEPARTMENT` = TABLE2.`DEPARTMENT`
WHERE TABLE1.`SALARY` >= TABLE2.`SALARY`;
<span style="font-family: Arial, Helvetica, sans-serif;">mysql的存儲過程實現,mysql中沒有像oracle中的%rowtype</span>

DELIMITER $$

CREATE PROCEDURE `test`.`SalaryCalcProc`()
    BEGIN
	#部門名
	DECLARE DEPARTMENT1 VARCHAR(20);
	#薪水
	DECLARE SALARY1 FLOAT(8);
	#關於部門平均薪水的遊標
	DECLARE DESTCURSOR CURSOR FOR SELECT `DEPARTMENT`,AVG(`SALARY`) FROM `EMPLOYEESALARY` GROUP BY `DEPARTMENT`;
	
	#打開遊標
	OPEN DESTCURSOR;
	
	#循環遊標
	READ_LOOP:LOOP
	  #讀取遊標值
	  FETCH DESTCURSOR INTO DEPARTMENT1,SALARY1;
		
	  IF FALSE THEN
	    LEAVE READ_LOOP;
	  END IF;
	  #檢索出高於部門平均薪水的職員
	  SELECT * FROM `EMPLOYEESALARY` WHERE SALARY >= SALARY1 AND DEPARTMENT = DEPARTMENT1;
	  
	END LOOP;
    END$$

DELIMITER ;





發佈了43 篇原創文章 · 獲贊 2 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章