You are on page 1of 7

Bài tập

BÀI 4: SQL (STRUCTURED QUERY LANGUAGE)


Sử dụng SQL thực hiện các truy vấn dữ liệu từ cơ bản đến nâng cao: truy vấn đơn giản,

 truy vấn trên nhiều bảng, truy vấn gom nhóm dữ liệu, truy vấn cập nhật dữ liệu, tích hợp
kết quả truy vấn, các chức năng truy vấn nâng cao

Ghi chú: các bài đánh dấu (*) là bài về nhà

4.1. Trong CSDL ProductShipping thực hiện câu truy vấn


Câu truy vấn đơn giản
a. Hiển thị danh sách nhân viên theo mẫu sau:
Cột Ngày vào làm (hiredate) định dạng dd/mm/yyyy

Mã nhân viên Họ và tên Chức danh Ngày vào làm


1 Davis Sara CEO 01/05/2002
2 Funk Don Vice President, Sales 14/08/2002
3 Lew Judy Sales Manager 01/04/2002
4 Peled Yael Sales Representative 03/05/2003
5 Buck Sven Sales Manager 17/10/2003
… … … …

b. Hiển thị các chức danh, những chức danh giống nhau chỉ hiển thị một lần.

Chức danh
CEO
Sales Manager
Sales Representative
Vice President, Sales

c. Hiển thị cột mã sản phẩm (productid) với độ rộng là 10 ký tự.

Mã hàng hóa Mã hàng hóa mới


1 0000000001
2 0000000002
17 0000000017
74 0000000074
… …

d. Hiển thi cột mã sản phẩm (productid) theo định dạng sau
Cột Lpad: Thêm vào bên trái cột productid dấu * cho đủ độ rộng 10 ký tự
Cột Rpad: Thêm vào bên phải cột productid dấu * cho đủ độ rộng 10 ký tự.

Mã hàng hóa Lpad Rpad


1 *********1 1*********
2 *********2 2*********
17 ********17 17********

SQL Server 2014 – Truy vấn SQL Trang 10/25


Bài tập

74 ********74 74********
… …

Câu truy vấn có lọc dữ liệu


a. Hiển thị các đơn đặt hàng trong 6 tháng đầu năm 2008. Kết quả sắp xếp giảm dần theo ngày đặt
hàng.

Mã đơn Mã khách Mã nhân Ngày đặt Ngày giao Quốc gia


đặt hàng hàng viên hàng hàng
11074 73 7 06/05/2008 NULL Denmark
11075 68 8 06/05/2008 NULL Switzerland
11076 9 4 06/05/2008 NULL France
11077 65 1 06/05/2008 NULL USA
11070 44 2 05/05/2008 NULL Germany
… … … …

b. Hiển thị các đơn đặt hàng đã chuyển đến Germany trong tháng 06 năm 2007

Mã đơn Mã khách Mã nhân Ngày đặt Ngày giao Quốc gia


đặt hàng hàng viên hàng hàng
10536 44 3 14/05/2007 06/06/2007 Germany
10540 63 3 19/05/2007 13/06/2007 Germany
10548 79 3 26/05/2007 02/06/2007 Germany
10554 56 4 30/05/2007 05/06/2007 Germany
10557 44 9 03/06/2007 06/06/2007 Germany
… … … …

c. Hiển thị danh sách khách hàng ở những thành phố (city) bắt đầu bằng ký tự 'S', 'O' hoặc 'R'.
Kết quả xếp tăng dần theo tên liên lạc (contactname)

Mã khách Tên người liên lạc Thành Phố Điện thoại


hang
7 Customer QXVLA Strasbourg 67.89.01.23
34 Cohen, Shy Rio de Janeiro (21) 789-0123
61 Florczyk, Krzysztof Rio de Janeiro (21) 678-9012
67 Garden, Euan Rio de Janeiro (21) 345-6789
70 Ginters, Kaspars Ginters, Kaspars 07-89 01 23
87 Ludwig, Michael Oulu 981-123456
… … … …

d. Hiển thị danh sách khách hàng ở những thành phố (city) không bắt đầu bằng ký tự 'S', 'O' và 'R'.
Kết quả xếp tăng dần theo tên liên lạc (contactname)

SQL Server 2014 – Truy vấn SQL Trang 11/25


Bài tập

Mã khách Tên người liên lạc Thành Phố Điện thoại


hang
1 Allen, Michael Berlin 030-3456789
4 Arndt, Torsten London (171) 456-7890
10 Bassols, Pilar Colome Tsawassen (604) 901-2345
13 Benito, Almudena México D.F. (5) 456-7890
16 Birkby, Dana London (171) 234-5678
… … … …

e. Hiển thị danh sách khách hàng ở những thành phố (city) có ký tự thứ 2 là 'Y'

Mã khách Tên người liên lạc Thành Phố Điện thoại


hang
84 Tuntisangaroon, Lyon 78.90.12.34
Sittichai

f. Hiển thị danh sách khách hàng ở những thành phố (city) có ký tự cuối cùng 'o'. Kết quả sắp xếp
theo tên thành phố tăng dần.

Mã khách Tên người liên lạc Thành Phố Điện thoại


hang
46 Dressler, Marlies Barquisimeto (9) 789-0123
49 Duerr, Bernard Bergamo 035-345678
34 Cohen, Shy Rio de Janeiro (21) 789-0123
61 Florczyk, Krzysztof Rio de Janeiro (21) 678-9012
67 Garden, Euan Rio de Janeiro (21) 345-6789
… … … …

g. Hiển thị danh sách khách hàng ở những thành phố (city) có 2 ký tự cuối cùng 'on'. Kết quả sắp xếp
tăng dần theo thành phố.

Mã khách Tên người liên lạc Thành Phố Điện thoại


hang
4 Arndt, Torsten London (171) 456-7890
11 Jaffe, David London (171) 789-0123
16 Birkby, Dana (171) 234-5678
19 Boseman, Randall (171) 345-6789
84 Tuntisangaroon, Lyon 78.90.12.34
Sittichai
… … … …

h. Hiển thị danh sách nhân viên và người quản lý của nhân viên này. Kết quả sắp xếp tăng dần theo
mã người quản lý.

SQL Server 2014 – Truy vấn SQL Trang 12/25


Bài tập

Mã nhân viên Nhân viên Mã quản lý Tên quản lý


2 Funk 1 Davis
3 Lew 2 Funk
5 Buck 2 Funk
4 Peled 3 Lew
8 Cameron 3 Lew
… … … …

i. Hiển thị danh sách nhân viên và người quản lý của nhân viên này. Hiển thị thêm nhân viên không
có người quản lý. Kết quả sắp tăng dần theo mã người quán lý

Mã nhân viên Nhân viên Mã quản lý Tên quản lý


1 Davis Null Null
2 Funk 1 Davis
3 Lew 2 Funk
5 Buck 2 Funk
4 Peled 3 Lew
8 Cameron 3 Lew
… … … …

j. Hiển thị những mặt hàng chưa có đơn đặt hàng.


k. Hiển thị những nhân viên chưa có đơn đặt hàng nào.
l. Hiển thị các đơn đặt hàng của từ Đức hoặc Brazil theo mẫu sau. kết quả sắp xếp theo ngày đặt
hàng

Mã khách Quốc gia Mã đơn đặt Ngày đặt Ngày giao Tên nhân
hàng hàng hàng hàng viên
6 Germany 11058 29/04/2008 Null Dolgopyatova
67 Brazil 11059 29/04/2008 Null Funk
62 Brazil 11068 04/05/2008 Null Cameron
44 Germany 11070 05/05/2008 Null Funk
m. Hiển thị thông tin của sản phẩm và phân loại giá bán với điều kiện sau
Mã sản phẩm Tên sản phẩm Đơn giá Giá
1 Product HHYDP 18.0 Thấp
2 Product RECZE 19 Thấp
4 Product KSBRM 22 Trung bình
5 Product EPEIM 21.35 Trung bình
8 Product WVJFP 4.0 Cao
… ... ... …

Điều kiện Giá


Unitprice < 20 Thấp
20 < Unitprice < 40 Trung bình
>= 40 Cao

Câu truy vấn có nhóm


a. Hiển thị những đơn đặt hàng có giá trị lớn hơn 11000

SQL Server 2014 – Truy vấn SQL Trang 13/25


Bài tập

Mã đơn đặt Giá trị


hàng
10417 11188.40
10865 16387.50
10889 11380.00
10981 15810.00
11030 12615.05

b. Hiển thị sản phẩm có nhiều đơn đặt hàng nhất.

Mã sản phẩm Tên sản phẩm Mã nhà cung cấp


59 Product UKXRI 28

Câu truy vấn có cột biểu thức điều kiện


a. Hiển thị số lượng các đơn đặt hàng trong các năm 2005, 206, 207, 208 và tổng số đơn đặt hàng
theo mẫu sau:

Năm 2005 Năm 2006 Năm 2007 Năm 2008 Tổng


0 122 398 310 830

b. Hiển thị số lương đơn đặt hàng do các nhân viên bán được trong các năm 2005, 2006, 2007, 2008
theo mẫu sau.

Mã nhân viên Năm 2005 Năm 2006 Năm 2007 Năm 2008 Tổng
1 0 17 57 49 123
2 0 12 41 43 96
3 0 14 66 47 127
4 0 28 76 52 126
5 0 8 21 13 42
6 0 13 31 23 67
7 0 11 34 27 72
8 0 15 55 34 104
9 0 4 17 22 43

Sử dụng câu truy vấn con (sub query)


a. Hiển thị các hàng hóa có đơn giá thấp nhất. Thông tin hiển thị gồm: productid, productname,
unitprice
b. Hiển thị các hàng hóa được các nhà cung cấp của nước Nhật cung cấp. Thông tin hiển thị gồm:
productid, productname, unitprice, supplierid. Sắp xếp theo đơn giá giảm dần
c. Hiển thị các hàng hóa được các nhà cung cấp của nước Nhật cung cấp và có đơn giá thấp nhất.
Thông tin hiển thị gồm: productid, productname, unitprice, supplierid
d. Hiển thị các nhà vận chuyển phụ trách các đơn đặt hàng được đặt trong tháng 2/2007. Thông tin
hiển thị gồm: shipperid, companyname, phone
e. Hiển thị các đơn đặt hàng do các nhân viên có tuổi từ 20 đến 30 phụ trách
f. Cho biết các nhà cung cấp nào đã cung cấp nhiều hàng hóa nhất

SQL Server 2014 – Truy vấn SQL Trang 14/25


Bài tập

g. Hiển thị các khách hàng chưa bao giờ đặt hàng
h. Hiển thị các khách hàng đặt nhiều hàng hóa nhất
i. Hiển thị các hàng hóa đã được khách hàng đặt nhiều nhất
j. Hiển thị các khách hàng đã đặt hàng trong tháng 2/2007
k. Hiển thị các đơn đặt hàng có tổng thành tiền đặt lớn nhất
l. Cho biết các khách hàng nào đã đặt các đơn đặt hàng có tổng thành tiền đặt lớn nhất
m. Cho biết các đơn đặt hàng có tổng thành tiền đặt lớn nhất trong năm 2007
n. Cho biết các đơn đặt hàng có tổng thành tiền đặt lớn nhất theo từng năm

Sử dụng các mệnh đề tích hợp kết quả từ nhiều câu truy vấn
a. Hiển thị các nhà vận chuyển và các nhân viên phụ trách các đơn đặt hàng được đặt trong tháng
2/2007. Thông tin hiển thị gồm 3 cột: shipperid, companyname, phone (empid, firstname, phone)
b. Hiển thị các nhà vận chuyển và các nhân viên phụ trách các đơn đặt hàng được đặt trong tháng
2/2007. Thông tin hiển thị gồm 4 cột: id, name, phone, status. Với status = “EMP” nếu là nhân
viên hoặc status = “SHIP” nếu là nhà vận chuyển
c. Hiển thị các khách hàng chưa bao giờ đặt hàng
d. Hiển thị số điện thoại của các đối tác vừa là nhà cung cấp vừa là khách hàng
e. Hiển thị mã , tên và số điện thoại của các đối tác vừa là nhà cung cấp vừa là khách hàng

4.2. Trong cơ sở dữ liệu HumanResource thực hiện câu truy vấn


Sử dụng câu truy vấn con (sub query)
a. Hiển thị các nhân viên làm ở thành phố “Seattle”
b. Hiển thị các nhân viên làm ở nước Mỹ
c. Hiển thị các nhân viên làm ở Châu Âu
d. Hiển thị các nhân viên có lương cao nhất của công ty
e. Hiển thị các nhân viên có mức lương thấp hơn hay bằng mức lương trung bình của công ty
f. Hiển thị các nhân viên trong công ty có mức lương cao hơn mức lương trung bình của phòng
“Marketing”
g. Hiển thị các nhân viên của phòng “Marketing” có mức lương cao hơn mức lương trung bình của
phòng
h. Hiển thị các phòng có tổng lương lớn hơn hay bằng tổng lương của phòng “Marketing”
i. Cho biết tên phòng ban và họ tên trưởng phòng của phòng ban có đông nhân viên nhất
j. Hiển thị các nhân viên là người quản lý
k. Hiển thị các nhân viên không là người quản lý
l. Hiển thị những người quản lý có lương lớn nhất
m. Hiển thị những người quản lý có nhiều nhân viên nhất
n. Hiển thị những nhân viên có first_name bị trùng nhiều nhất
o. Hiển thị các nhân viên có lương cao nhất của phòng mà nhân viên đó thuộc về
p. Cho biết thời điểm nào có nhiều nhân viên vào làm nhất
q. Cho biết trung bình tổng lương của các phòng là bao nhiêu? Biết rằng TB tổng lương các phòng =
(Tổng lương phòng 1 + Tổng lương phòng 2 + ... + Tổng lương phòng N)/N

SQL Server 2014 – Truy vấn SQL Trang 15/25


Bài tập

Sử dụng các mệnh đề tích hợp kết quả từ nhiều câu truy vấn
a. Hiển thị các phòng chưa có nhân viên vào làm
b. Hiển thị các công việc đang làm và đã làm của các nhân viên có sắp theo thứ tự mã nhân viên và
ngày bắt đầu
c. Cho biết những nhân viên nào chưa bao giờ thay đổi công việc
d. Cho biết những nhân viên nào có nhiều lần thay đổi công việc nhất
e. Cho biết những nhân viên đang làm một công việc mà công việc này đã từng được làm trước đó
f. Hiển thị các nhân viên không là người quản lý
g. Thống kê theo mẫu sau đây:
Số nhân viên vào làm Năm 2001 Năm 2002 Năm 2003
15 7 6 2

h. Thống kê theo mẫu sau đây:


Nhân viên vào làm theo Năm 2001 Năm 2002 Năm 2003
công việc
Công việc 1 7 6 2
Công việc 2 5 0 6

SQL Server 2014 – Truy vấn SQL Trang 16/25

You might also like