TASK 06 綜合練習

2021-10-13 05:17:45 字數 4827 閱讀 4289

練習一: 各部門工資最高的員工(難度:中等)

建立employee 表,包含所有員工資訊,每個員工有其對應的 id, salary 和 department id。

±—±------±-------±-------------+

| id | name | salary | departmentid |

±—±------±-------±-------------+

| 1 | joe | 70000 | 1 |

| 2 | henry | 80000 | 2 |

| 3 | sam | 60000 | 2 |

| 4 | max | 90000 | 1 |

±—±------±-------±-------------+

建立department 表,包含公司所有部門的資訊。

±—±---------+

| id | name |

±—±---------+

| 1 | it |

| 2 | sales |

±—±---------+

編寫乙個 sql 查詢,找出每個部門工資最高的員工。例如,根據上述給定的**,max 在 it 部門有最高工資,henry 在 sales 部門有最高工資。

±-----------±---------±-------+

| department | employee | salary |

±-----------±---------±-------+

| it | max | 90000 |

| sales | henry | 80000 |

±-----------±---------±-------+

答:第一題上來而言就對我感覺比較難。我看看其他人的作業跟著模仿了一下。

// an highlighted block

use shop;

create

table

employee

( id int not

null auto_increment,

name varchar(8

)not

null

, salary int not null

, departmentid int not null

,primary

key(id));

insert

into

employee

(name,salary,departmentid)

values

('joe'

,70000,1

);insert

into

employee

(name,salary,departmentid)

values

('henry'

,80000,2

);insert

into

employee

(name,salary,departmentid)

values

('sam'

,60000,2

);insert

into

employee

(name,salary,departmentid)

values

('max'

,90000,1

);create

table

department(id

intnot

null

auto_increment

, name varchar(8

)not

null

,primary

key(id)

);use shop;

insert

into

department

(name)

values

('it');

insert

into

department

(name)

values

('sales');

select d.name as department, e.name as employee,e.salary as salery

from department as d

join

(select name,salary,departmentid from employee as e1

where salary =

(select

max(salary)

from employee as e2

where e1.departmentid= e2.departmentid

group

by e2.departmentid))as

eon id= departmentid

order

by e.salary desc

;

練習二: 換座位(難度:中等)

小美是一所中學的資訊科技老師,她有一張 seat 座位表,平時用來儲存學生名字和與他們相對應的座位 id。

其中縱列的id是連續遞增的

小美想改變相鄰倆學生的座位。

你能不能幫她寫乙個 sql query 來輸出小美想要的結果呢?

請建立如下所示seat表:

示例:±--------±--------+

| id | student |

±--------±--------+

| 1 | abbot |

| 2 | doris |

| 3 | emerson |

| 4 | green |

| 5 | jeames |

±--------±--------+

假如資料輸入的是上表,則輸出結果如下:

±--------±--------+

| id | student |

±--------±--------+

| 1 | doris |

| 2 | abbot |

| 3 | green |

| 4 | emerson |

| 5 | jeames |

±--------±--------+

注意:如果學生人數是奇數,則不需要改變最後乙個同學的座位。

答:

// an highlighted block

create

table

seat

(id int not null auto_increment,

student varchar(10

)not

null

,primary

key(id));

insert

into

seat

(student)

values

('abbot');

insert

into

seat

(student)

values

('doris');

insert

into

seat

(student)

values

('green');

insert

into

seat

(student)

values

('emerson');

insert

into

seat

(student)

values

('jeames');

select

(case

when s.id %2=

0 then s.id-

1when s.id %2!=

0 and s.id!= c.counts then s.id +

1else s.id end

)as id,

student

from seat ass,

(select

count(*

)as counts from seat)asc

order

by id;

這道題也是模仿出來的。

練習三: 分數排名(難度:中等)

編寫乙個 sql 查詢來實現分數排名。如果兩個分數相同,則兩個分數排名(rank)相同。請注意,平分後的下乙個名次應該是下乙個連續的整數值。換句話說,名次之間不應該有「間隔」。

建立以下score表:

±—±------+

| id | score |

±—±------+

| 1 | 3.50 |

| 2 | 3.65 |

| 3 | 4.00 |

| 4 | 3.85 |

| 5 | 4.00 |

| 6 | 3.65 |

±—±------+

例如,根據上述給定的 scores 表,你的查詢應該返回(按分數從高到低排列):

±------±-----+

| score | rank |

±------±-----+

| 4.00 | 1 |

| 4.00 | 1 |

| 3.85 | 2 |

| 3.65 | 3 |

| 3.65 | 3 |

| 3.50 | 4 |

±------±-----+

答:這道題我感覺是真得寫不出來。沒有趕腳。

剩下的題我也是沒有啥感覺。對我而言確實有點困難。

Python刻意練習 Task 06 字典與集合

學習資料 引入 字典和集合同列表一樣,屬於6個標準資料型別。part 01 字典 dict dict dict sape 4139 guido 4127 jack 4098 del dict 關鍵字 del clear 清空字典 deldict 刪除字典part 02 集合 set 或set 例 b...

Task06 字典與集合

集合是由不重複元素組成的無序的集。它的基本用法包括成員檢測和消除重複元素。集合物件也支援像 聯合,交集,差集,對稱差分等數 算。理解字典的最好方式,就是將它看做是乙個 鍵 值 對的集合,鍵必須是唯一的 在乙個字典中 一對花括號可以建立乙個空字典 另一種初始化字典的方式是在一對花括號裡放置一些以逗號分...

Task06 字典與集合

task06 字典與集合 一 字典 字典是另一種可變容器模型,且可儲存任意型別物件。字典的每個鍵值 key value 對用冒號 分割,每個對之間用逗號 分割,整個字典包括在花括號 中 鍵必須是唯一的,但值則不必。值可以取任何資料型別,但鍵必須是不可變的,如字串,數字或元組。二 字典的特性 a 不允...