練習一: 各部門工資最高的員工(難度:中等)
建立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 不允...