You are on page 1of 7

I.

Tạo database có tên là banhang và thực hiện chạy các script trong hai file
create_table_ban_bang.txt và insert_data_ban_hang.txt để tạo các bảng và dữ liệu.

II. Thực hiện các câu truy vấn sau:


1. Lấy danh sách các nhân viên của cửa hàng có tên là: Santa Cruz Bikes
Cách 1
SELECT staff_id, first_name, last_name, stores.store_id, stores.store_id
FROM staffs JOIN stores ON staffs.store_id=stores.store_id
where store_name='Santa Cruz Bikes';
Cách 2:
SELECT staff_id, first_name, last_name, stores.store_id, stores.store_id
FROM staffs, stores
WHERE stores.store_id=staffs.store_id
AND store_name='Santa Cruz Bikes';
2. Lấy danh sách các sản phẩm (product_name trong products) thuộc loại
(cate_name trong cates) (category) là: Mountain Bikes
SELECT product_name as 'Tên sản phẩm', category_name as 'Tên loại'
FROM products JOIN categories on products.category_id=categories.category_id
where category_name='Mountain Bikes';
3. Lấy danh sách các sản phẩm thuộc thương hiệu (brand) là: Heller
SELECT product_id, product_name, FROM products, brands
WHERE products.brand_id=brands.brand_id AND brands.brand_name='Heller'
4. Lấy danh sách các sản phẩm có giá tiền nhỏ hơn 149.99
SELECT product_id, product_name, list_price FROM products
where list_price<149.99;
5. Lấy danh sách các sản phẩm có năm sản xuất (model year) là 2017
SELECT product_id,product_name FROM products
WHERE products.model_year=2017
6. Lấy danh sách các sản phẩm hiện có tại cửa hàng Rowlett Bikes
SELECT
product_name AS 'Tên sản phẩm',
store_name AS 'Tên cửa hàng'
from
products,
stocks,
stores
WHERE
products.product_id=stocks.product_id
AND stocks.store_id=stores.store_id
AND quantity>0
AND stores.store_name='Rowlett Bikes';
Cách 2:
SELECT product_name, quantity, store_name
FROM (products JOIN stocks on products.product_id=stocks.product_id) JOIN
stores ON stores.store_id=stocks.store_id
WHERE store_name='Rowlett Bikes' AND products.product_id NOT IN
(SELECT products.product_id
FROM (products JOIN stocks on products.product_id=stocks.product_id) JOIN
stores on stocks.store_id=stores.store_id
WHERE quantity=0);
Cách 3
SELECT products.product_id, product_name, quantity, store_name
FROM (products JOIN stocks on products.product_id=stocks.product_id) JOIN
stores on stocks.store_id=stores.store_id
WHERE quantity>0 and store_name='Rowlett Bikes';
7. Lấy danh sách các sản phẩm không có tại cửa hàng Baldwin Bikes
SELECT
product_name,
products.product_id,
stocks.product_id,
stocks.store_id,
stores.store_id
from
products,
stocks,
stores
WHERE
products.product_id=stocks.product_id
AND stocks.store_id=stores.store_id
AND quantity=0
AND stores.store_name='Baldwin Bikes';
Cách 2:
SELECT product_name FROM products
WHERE product_id NOT IN (not in ở điều kiện câu dưới, nghĩa là câu ở hàng thứ
3 trở xuống có nghĩa là lấy các sp có product_id có tại baldwin nên do đó, sd not
in để lấy các sp không có tại cửa hàng baldwin)
(SELECT products.product_id
FROM (products JOIN stocks on products.product_id=stocks.product_id) JOIN
stores ON stocks.store_id=stores.store_id
WHERE stores.store_name='Baldwin Bikes');
Cách 3:
SELECT product_name, store_name
FROM (products JOIN stocks ON products.product_id=stocks.product_id) JOIN
stores ON stores.store_id=stocks.store_id
WHERE store_name='Baldwin Bikes' AND stocks.quantity=0
Cách 4
SELECT product_name, quantity
FROM products JOIN stocks ON products.product_id=stocks.product_id) JOIN
stores ON stocks.store_id=stores.store_id
WHERE store_name='Baldwin Bikes' AND products.product_id NOT IN
(SELECT products.product_id
FROM (products JOIN stocks ON products.product_id=stocks.product_id) JOIN
stores ON stocks.store_id=stores.store_id
WHERE quantity>0 AND store_name='Baldwin Bikes');
8. Lấy danh sách các sản phẩm có số lượng hàng tồn nhỏ hơn 2 tại cửa
hàng Baldwin
SELECT
product_name,
products.product_id,
stocks.product_id,
stocks.store_id,
stores.store_id
from
products,
stocks,
stores
WHERE
products.product_id=stocks.product_id
AND stocks.store_id=stores.store_id
AND quantity<2
AND stores.store_name='Baldwin Bikes';
Cách 2:
9. Lấy danh sách các sản phẩm có số lượng hàng tồn lớn hơn 2 tại cửa
hàng Baldwin
SELECT
product_name,
products.product_id,
stocks.product_id,
stocks.store_id,
stores.store_id
from
products,
stocks,
stores
WHERE
products.product_id=stocks.product_id
AND stocks.store_id=stores.store_id
AND quantity>2
AND stores.store_name='Baldwin Bikes';
Cách 2:
SELECT products.product_id, product_name, quantity
FROM (products JOIN stocks ON products.product_id=stocks.product_id) JOIN
stores ON stocks.store_id=stores.store_id
WHERE stores.store_name='Baldwin Bikes' AND quantity>2
ORDER BY quantity (ORDER BY quantity DESC: Sắp xếp theo quantity theo số
lượng giảm dần
HÀM SUM, MAX, MIN, AVERAGE, COUNT: LÀ HÀM NHÓM
10. Thống kê số lượng hàng tồn của sản phẩm có tên Electra Moto 1 – 2016 tại
mỗi cửa hàng
SELECT
store_name,
quantity,
product_name
FROM
stores,
stocks,
products
WHERE
stores.store_id=stocks.store_id
AND products.product_id=stocks.product_id
AND product_name='Electra Moto 1 - 2016';
Cách 2:

SELECT product_name, quantity, store_name


FROM (stores JOIN stocks ON stores.store_id=stocks.store_id) JOIN products ON
products.product_id=stocks.product_id
WHERE product_name='Electra Moto 1 - 2016'
order BY store_name;
11. Lấy danh sách các sản phẩm thuộc loại (category) là: Mountain Bikes và có số
lượng hàng tồn nhỏ hơn 5.
select product_name, quantity FROM products, stocks, categories
where products.product_id=stocks.product_id AND
categories.category_id=products.category_id AND quantity<5 AND
category_name='Mountain Bikes'
ORDER BY quantity DESC;
12. Lấy danh sách những khách hàng đã từng mua hàng tại cửa hàng Rowlett
Bikes
SELECT first_name, last_name, customers.customer_id, orders.customer_id,
orders.store_id, stores.store_id FROM customers, orders, stores
where customers.customer_id=orders.customer_id AND
stores.store_id=orders.store_id AND store_name='Rowlett Bikes' and
order_status=4;
Cách 2:
SELECT first_name, last_name, store_name
FROM (customers JOIN orders ON customers.customer_id=orders.customer_id)
JOIN stores on orders.store_id=stores.store_id
WHERE store_name='Rowlett Bikes';
13. Lấy danh sách những khách hàng có tổng giá trị đơn hàng (chưa giảm giá) lớn
hơn 3000 ($). ($). Thông tin hiển thị gồm họ, tên, email, tổng giá trị đơn hàng.
SELECT first_name, last_name, orders.order_id AS 'Đơn hàng',
sum(list_price*quantity) AS 'Tổng tiền'
FROM (orders JOIN order_items on orders.order_id=order_items.order_id) JOIN
customers ON orders.customer_id=customers.customer_id
GROUP BY orders.order_id, last_name, first_name (gr by last and first để hiện ra
khách hàng
HAVING sum(list_price*quantity)>3000
order BY sum(list_price*quantity);
;HAVING VÀ WHERE LÀ CÂU ĐIỀU KIỆN, TRONG ĐÓ, HAVING LÀ CÂU ĐIỀU
KIỆN NHÓM
14. Lấy danh sách đơn hàng có tổng số tiền được giảm giá (discount) lớn hơn 50
($) (discount được tính theo tỉ lệ %. Ví dụ: 0.2 = 20%, 0.05 = 5%, . . . .)
SELECT orders.order_id AS 'Đơn hàng', sum(quantity*list_price*(1-discount)) as
'Tổng tiền'
FROM (orders JOIN order_items ON orders.order_id=order_items.order_id)
GROUP BY orders.order_id
HAVING sum(quantity*list_price*(1-discount))>500
ORDER BY sum(quantity*list_price*(1-discount));
15. Thống kê số lượng đơn hàng giao dịch thành công (order_status = 4) tại mỗi
cửa hàng trong tháng 3/2016 (thống kê theo order_date). Thông tin hiển thị: Tên
cửa hàng, tổng số lượng đơn hàng. (???)
SELECT stores.store_id, store_name, COUNT(order_id) as 'Số lượng đơn hàng
tại mỗi cửa hàng'
FROM stores JOIN orders ON stores.store_id=orders.store_id
WHERE order_status=4 AND year(order_date)=2016 AND
month(order_date)=03
group BY stores.store_id, store_name
order BY stores.store_id;
16. Thống kê số lượng đơn hàng bị hủy tại mỗi cửa hàng (biết đơn hàng bị hủy có
order_status = 3)
SELECT order_items.order_id, product_name
FROM (orders JOIN order_items ON orders.order_id=order_items.order_id) JOIN
products ON order_items.product_id=products.product_id
WHERE order_status=3
17. Thống kê số lượng đơn hàng giao dịch thành công của mỗi nhân viên
18. Thống kê số lượng đơn hàng bị hủy của mỗi nhân viên trong năm 2017
19. Thống kế số lượng đơn hàng giao dịch thành công của mỗi nhân viên trong
tháng 3/2016. Thông tin hiển thị gồm mã nhân viên (staff_id), họ tên (first_name,
last_name), số lượng đơn hàng
20. Lấy danh sách những nhân viên có số lượng đơn hàng lớn hơn 20 trong tháng
1/2017. Thông tin hiển thị gồm mã nhân viên (staff_id), họ tên (first_name,
last_name), số lượng đơn hàng.

You might also like