Thực Hành Truy Vấn Cơ Sở Dữ Liệu MySQL

Nội dung thực hành

  1. Truy vấn đơn bảng và đa bảng
  2. Sử dụng mệnh đề WHERE và HAVING
  3. Sắp xếp dữ liệu với ORDER BY (ASC/DESC)
  4. Kết hợp bảng với JOIN
  5. Nhóm dữ liệu bằng GROUP BY
  6. Giới hạn kết quả với LIMIT

Bài tập 1: Truy vấn sách

Tìm sách thuộc thể loại "Fiction" xuất bản sau năm 2020 với giá dưới 30. Bảng publications chứa: pub_id, title, writer, pub_year, cost, genre.

SELECT title, writer 
FROM publications
WHERE pub_year > 2020
  AND genre = 'Fiction'
  AND cost < 30;

Bài tập 2: Sắp xếp nhân viên

Sắp xếp thông tin nhân viên từ bảng staff (staff_id, full_name, dept, start_date, income) theo phòng ban tăng dần, ngày vào giảm dần, lương tăng dần.

SELECT *
FROM staff
ORDER BY dept ASC, start_date DESC, income ASC;

Bài tập 3: Lọc sự kiện

Lấy sự kiện có điểm >5 từ bảng activities (activity_id, activity_name, type, begin_date, participants, score), sắp xếp theo loại, ngày bắt đầu, điểm và số người tham gia.

SELECT *
FROM activities
WHERE score > 5
ORDER BY type ASC, begin_date DESC, score ASC, participants DESC;

Bài tập 4: Sắp xếp sản phẩm

Sắp xếp sản phẩm từ bảng items (item_id, item_name, group, unit_price, stock) theo nhóm giảm dần, giá tăng dần, tồn kho giảm dần.

SELECT *
FROM items
ORDER BY group DESC, unit_price ASC, stock DESC;

Bài tập 5: Nhân viên bán hàng

Tìm nhân viên phòng "Sales" với lương >5000, sắp xếp theo điểm hiệu suất giảm dần, ngày vào tăng dần, lương giảm dần. Giới hạn 20 kết quả từ bảng sales_team (sales_id, salesperson, division, employment_date, compensation, performance_score).

SELECT *
FROM sales_team
WHERE division = 'Sales' AND compensation > 5000
ORDER BY performance_score DESC, employment_date ASC, compensation DESC
LIMIT 20;

Bài tập 6: Phim hài

Tìm phim hài (2010-2023) có điểm >7 và thời lượng <120 phút, sắp xếp theo thời lượng tăng dần, điểm giảm dần. Giới hạn 15 kết quả từ bảng films (film_id, title, category, year_released, duration, rating_value).

SELECT *
FROM films 
WHERE category ='Comedy' 
  AND year_released BETWEEN 2010 AND 2023  
  AND rating_value > 7 
  AND duration < 120 
ORDER BY duration ASC, rating_value DESC
LIMIT 15;

Bài tập 7: Lương trung bình phòng ban

Tính lương trung bình theo phòng ban từ bảng divisions (div_id, div_name) và staff_members (member_id, member_name, div_id, pay), sắp xếp theo lương trung bình và tên phòng ban.

SELECT 
    d.div_name,
    AVG(s.pay) AS avg_pay
FROM divisions d
JOIN staff_members s ON d.div_id = s.div_id
GROUP BY d.div_id, d.div_name
ORDER BY avg_pay ASC, d.div_name ASC;

Bài tập 8: Tổng sản phẩm bán ra

Tính tổng sản phẩm bán được theo cửa hàng từ bảng outlets (outlet_id, outlet_name, location) và sales_records (record_id, outlet_id, item_name, qty_sold), sắp xếp theo số lượng giảm dần và tên cửa hàng.

SELECT  
    o.outlet_name,
    o.location,
    SUM(s.qty_sold) AS total_sold
FROM outlets o
JOIN sales_records s ON o.outlet_id = s.outlet_id 
GROUP BY o.outlet_id, o.outlet_name, o.location
ORDER BY total_sold DESC, o.outlet_name ASC;

Thẻ: mysql SQL-Queries WHERE-Clause ORDER-BY JOIN-Operations

Đăng vào ngày 20 tháng 5 lúc 12:20