1. 程式人生 > >SQL基礎練習02

SQL基礎練習02

0 資料表建立

 1 CREATE TABLE  `titles` (
 2 `emp_no` INT(11) NOT NULL,
 3 `title` VARCHAR(50) NOT NULL,
 4 `from_date` DATE NOT NULL,
 5 `to_date` DATE NOT NULL);
 6 INSERT INTO titles VALUES(10001,'Senior Engineer','1986-06-26','9999-01-01');
 7 INSERT INTO titles VALUES(10002,'Staff','1996-08-03','9999-01-01');
 8
INSERT INTO titles VALUES(10003,'Senior Engineer','1995-12-03','9999-01-01'); 9 INSERT INTO titles VALUES(10004,'Engineer','1986-12-01','1995-12-01'); 10 INSERT INTO titles VALUES(10004,'Senior Engineer','1995-12-01','9999-01-01'); 11 INSERT INTO titles VALUES(10005,'Senior Staff','1996-09-12','9999-01-01'); 12 INSERT
INTO titles VALUES(10005,'Staff','1989-09-12','1996-09-12'); 13 INSERT INTO titles VALUES(10006,'Senior Engineer','1990-08-05','9999-01-01'); 14 INSERT INTO titles VALUES(10007,'Senior Staff','1996-02-11','9999-01-01'); 15 INSERT INTO titles VALUES(10007,'Staff','1989-02-10','1996-02-11'); 16 INSERT INTO titles VALUES(10008,'
Assistant Engineer','1998-03-11','2000-07-31'); 17 INSERT INTO titles VALUES(10009,'Assistant Engineer','1985-02-18','1990-02-18'); 18 INSERT INTO titles VALUES(10009,'Engineer','1990-02-18','1995-02-18'); 19 INSERT INTO titles VALUES(10009,'Senior Engineer','1995-02-18','9999-01-01'); 20 INSERT INTO titles VALUES(10010,'Engineer','1996-11-24','9999-01-01'); 21 INSERT INTO titles VALUES(10010,'Engineer','1996-11-24','9999-01-01');

1、 從titles表中獲取title並按照title分組

題目描述
從titles表獲取按照title進行分組,每組個數大於等於2,給出title以及對應的數目t。

輸出描述:

1 /*
2 此題應注意以下三點:
3 1、用COUNT()函式和GROUP BY語句可以統計同一title值的記錄條數
4 2、根據題意,輸出每個title的個數為t,故用AS語句將COUNT(title)的值轉換為t
5 3、由於WHERE後不可跟COUNT()函式,故用HAVING語句來限定t>=2的條件
6 */
7 
8 SELECT title, COUNT(title) AS t FROM titles
9 GROUP BY title HAVING t >= 2

2、從titles表中獲取title並按照title分組,重複的emp_no忽略

題目描述
從titles表獲取按照title進行分組,每組個數大於等於2,給出title以及對應的數目t。

輸出描述:

1 /*
2 此題應注意以下三點:
3 1、先用GROUP BY title將表格以title分組,再用COUNT(DISTINCT emp_no)可以統計同一title值且不包含重複emp_no值的記錄條數
4 2、根據題意,輸出每個title的個數為t,故用AS語句將COUNT(DISTINCT emp_no)的值轉換為t
5 3、由於WHERE後不可跟COUNT()函式,故用HAVING語句來限定t>=2的條件
6 */
7 
8 SELECT title, COUNT(DISTINCT emp_no) AS t FROM titles
9 GROUP BY title HAVING t >= 2

3 查詢employees表

題目描述
查詢employees表所有emp_no為奇數,且last_name不為Mary的員工資訊,並按照hire_date逆序排列
輸入描述:

輸出描述:

 

 注:此題資料仍是基礎練習01的employees表

 1 /*
 2 三點需要注意:
 3 1、員工號為奇數,則emp_no取餘應為1
 4 2、last_name不為Mary,用‘!=’表示也可以用<>表示
 5 3.根據hire_date逆序排列,用desc
 6 */
 7 
 8 SELECT * FROM employees
 9 WHERE emp_no%2 =1
10 AND last_name <> 'Mary'
11 ORDER BY hire_date DESC;