Oracle+SQL:¾­µä²éѯÁ·ÊÖËÄÆª ÏÂÔØ±¾ÎÄ

µØÇøÃû³Æ¡£

6. ÄÄЩԱ¹¤µÄ¹¤×Ê£¬¸ßÓÚÕû¸ö¹«Ë¾µÄƽ¾ù¹¤×Ê£¬ÁгöÔ±¹¤µÄÃû×ֺ͹¤×Ê£¨½µÐò£©¡£ 7. ÄÄЩԱ¹¤µÄ¹¤×Ê£¬½éÓÚ50ºÅ ºÍ80ºÅ²¿ÃÅÆ½¾ù¹¤×ÊÖ®¼ä¡£ 8. ËùÔÚ²¿ÃÅÆ½¾ù¹¤×ʸßÓÚ5000 µÄÔ±¹¤Ãû×Ö¡£

9. Áгö¸÷¸ö²¿ÃÅÖй¤×Ê×î¸ßµÄÔ±¹¤µÄÐÅÏ¢£ºÃû×Ö¡¢²¿Ãźš¢¹¤×Ê¡£ 10. ×î¸ßµÄ²¿ÃÅÆ½¾ù¹¤×ÊÊǶàÉÙ¡£

---------------------------------------------*/ ¸÷ÊÔÌâ½â´ðÈçÏÂ(»¶Ó­´ó¼ÒÖ¸³ö²»Í¬µÄ·½·¨»ò½¨Òé!)£º

/*--------1¡¢¸÷¸ö²¿ÃÅÆ½¾ù¡¢×î´ó¡¢×îС¹¤×Ê¡¢ÈËÊý£¬°´ÕÕ²¿ÃźÅÉýÐòÅÅÁС£---------*/

SQL> SELECT DEPARTMENT_ID AS ²¿ÃźÅ,AVG(SALARY) AS ƽ¾ù¹¤×Ê 2 ,MAX(SALARY) AS ×î¸ß¹¤×Ê,MIN(SALARY) AS ×îµÍ¹¤×Ê 3 ,COUNT(*) AS ÈËÊý 4 FROM EMPLOYEES

5 GROUP BY DEPARTMENT_ID

6 ORDER BY DEPARTMENT_ID ASC;

²¿ÃźŠƽ¾ù¹¤×Ê ×î¸ß¹¤×Ê ×îµÍ¹¤×Ê ÈËÊý ------ ---------- ---------- ---------- ----------

10 4400 4400 4400 1

20 9500 13000 6000 2

30 4150 11000 2500 6

40 6500 6500 6500 1

50 3475.55555 8200 2100 45

60 5760 9000 4200 5

70 10000 10000 10000 1

80 8973.85294 14000 6100 34

90 21333.3333 24000 20000 3

100 8600 12000 6900 6

110 10150 12000 830

0 2

7000 7000 7000 1

12 rows selected

/*--------2¡¢¸÷¸ö²¿ÃÅÖй¤×Ê´óÓÚ5000µÄÔ±¹¤ÈËÊý¡£---------*/ SQL> SELECT DEPARTMENT_ID,COUNT(*) FROM EMPLOYEES 2 WHERE SALARY > 5000

3 GROUP BY DEPARTMENT_ID;

DEPARTMENT_ID COUNT(*) ------------- ---------- 20 2 30 1 40 1 50 5 60 2 70 1 80 34 90 3 100 6 110 2 1

11 rows selected

/*--------3¡¢¸÷¸ö²¿ÃÅÆ½¾ù¹¤×ʺÍÈËÊý£¬°´ÕÕ²¿ÃÅÃû×ÖÉýÐòÅÅÁС£---------*/

SQL> SELECT DPTNAME,AVG(SALARY),COUNT(*) FROM 2 (SELECT

3 (SELECT DEPT.DEPARTMENT_NAME FROM DEPARTMENTS DEPT

4 WHERE DEPT.DEPARTMENT_ID = EMP.DEPARTMENT_ID) DPTNAME, 5 EMP.SALARY 6 FROM EMPLOYEES EMP) 7 GROUP BY DPTNAME 8 ORDER BY DPTNAME;

DPTNAME AVG(SALARY) COUNT(*) ------------------------------ ----------- ---------- Accounting 10150 2 Administration 4400 1 Executive 21333.33333 3

Finance 8600 6 Human Resources 6500 1 IT 5760 5 Marketing 9500 2 Public Relations 10000 1 Purchasing 4150 6 Sales 8973.852941 34 Shipping 3475.555555 45 7000 1 12 rows selected

--»òÕß--

SQL> SELECT DEPT.DEPARTMENT_NAME,AVG(EMP.SALARY),COUNT(*) 2 FROM EMPLOYEES EMP,DEPARTMENTS DEPT

3 WHERE EMP.DEPARTMENT_ID = DEPT.DEPARTMENT_ID 4 GROUP BY DEPT.DEPARTMENT_NAME 5 ORDER BY DEPT.DEPARTMENT_NAME;

DEPARTMENT_NAME AVG(EMP.SALARY) COUNT(*) ------------------------------ --------------- ---------- Accounting 10150 2 Administration 4400 1 Executive 21333.333333333 3 Finance 8600 6 Human Resources 6500 1 IT 5760 5 Marketing 9500 2 Public Relations 10000 1 Purchasing 4150 6 Sales 8973.8529411764 34 Shipping 3475.5555555555 45

11 rows selected

--¿ÉÒÔ¿´µ½£¬ÕâÖÖ·½Ê½£¬¶ÔÓÚ²¿ÃźÅΪ¿ÕµÄûÓÐͳ¼Æ³öÀ´

/*--------4¡¢Áгöÿ¸ö²¿ÃÅÖÐÓÐͬÑù¹¤×ʵÄÔ±¹¤µÄͳ¼ÆÐÅÏ¢£¬ ÁгöËûÃǵIJ¿Ãźţ¬¹¤×Ê£¬ÈËÊý¡£---------*/

SQL> SELECT EMP1.DEPARTMENT_ID,EMP1.SALARY,COUNT(*) CNT 2 FROM EMPLOYEES EMP1,EMPLOYEES EMP2

3 WHERE EMP1.DEPARTMENT_ID = EMP2.DEPARTMENT_ID AND 4 EMP1.SALARY = EMP2.SALARY

5 AND EMP1.EMPLOYEE_ID <> EMP2.EMPLOYEE_ID

6 GROUP BY EMP1.DEPARTMENT_ID,EMP1.SALARY;

DEPARTMENT_ID SALARY CNT ------------- ---------- ---------- 50 2200.00 2 50 2400.00 2 50 2500.00 20 50 2600.00 6 50 2700.00 2 50 2800.00 6 50 2900.00 2 50 3000.00 2 50 3100.00 6 50 3200.00 12 50 3300.00 2 50 3600.00 2 60 4800.00 2 80 7000.00 2 80 7500.00 2 80 8000.00 6 80 9000.00 2 80 9500.00 6 80 10000.00 6 80 10500.00 2 80 11000.00 2 90 20000.00 2

22 rows selected

/*--------5¡¢Áгöͬ²¿ÃÅÖй¤×ʸßÓÚ1000 µÄÔ±¹¤ÊýÁ¿³¬¹ý2 È˵IJ¿ÃÅ£¬ ÏÔʾ²¿ÃÅÃû×Ö¡¢µØÇøÃû³Æ¡£---------*/

SQL> SELECT D.DEPARTMENT_NAME,L.CITY,COUNT(*) 2 FROM EMPLOYEES E,DEPARTMENTS D,LOCATIONS L 3 WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID AND 4 D.LOCATION_ID = L.LOCATION_ID AND 5 E.SALARY > 1000

6 GROUP BY D.DEPARTMENT_NAME,L.CITY 7 HAVING COUNT(*) > 2;

DEPARTMENT_NAME CITY COUNT(*)

------------------------------ ------------------------------ ----------