10 câu lệnh SQL ai cũng cần phải biết

Ngôn ngữ truy vấn có cấu trúc hay SQL là một ngôn ngữ dựa trên các truy vấn đơn giản, dễ đọc và dễ viết. Đây là một trong những ngôn ngữ phổ biến nhất trên thế giới.

Trong thế giới ngày nay, tất cả chúng ta đều biết dữ liệu quan trọng như thế nào. Trong bài viết này, chúng ta sẽ tìm hiểu các truy vấn SQL phổ biến nhất thông qua các ví dụ.

Mục đích của bài viết này là để cho bạn biết các truy vấn cơ bản và nâng cao được sử dụng trong khoa học dữ liệu.

Lưu ý: Tất cả các truy vấn được viết bằng PostgreSQL.

10 câu lệnh SQL bạn cần ghi nhớ

1. Chọn tất cả các cột

Nếu bạn muốn chọn tất cả các trường có sẵn trong bảng, hãy sử dụng cú pháp sau: * giúp chúng ta chọn tất cả các cột trong bảng.

SELECT * FROM employees

2. Where

Chúng ta có thể sử dụng mệnh đề WHERE, mệnh đề này lọc dữ liệu dựa trên câu lệnh đã cho.

Ví dụ: Viết câu truy vấn để in ra tất cả các biến cho Sports.

SELECT * FROM employees
WHERE department = 'Sports'

3. Group by và mệnh đề Having

Mệnh đề Group By nhóm các hàng có cùng giá trị.

Ví dụ: Tổng lương cho từng bộ phận là bao nhiêu?

SELECT SUM(salary) as total_salary,department 
FROM employees
GROUP BY department

Trong SQL, không thể sử dụng các hàm tổng hợp như SUM, AVG, MAX, MIN và COUNT trong mệnh đề WHERE. Nếu chúng ta muốn lọc bảng của mình bằng một hàm tổng hợp, chúng ta cần sử dụng mệnh đề HAVING.

Ví dụ: Những phòng ban nào có hơn 50 nhân viên?

SELECT count(*) as total_employee,department 
FROM employees
GROUP BY department
HAVING COUNT(*) > 50

4. Order By và Limit

Ví dụ: Tìm tổng lương theo từng bộ phận và sắp xếp giảm dần theo cột tổng lương.

SELECT SUM(salary) as total_salary,department FROM employees
GROUP BY department
ORDER BY total_salary desc

Lệnh Limit được sử dụng để chỉ định số lượng bản ghi cần trả về.

Ví dụ: Viết một câu truy vấn tìm 5 nhân viên đầu tiên có first_name, bộ phận và mức lương của họ và được sắp xếp theo first_name.

Lưu ý: Mệnh đề Order By mặc định sắp xếp kết quả theo thứ tự ASCENDING.

SELECT first_name,department,salary from employees
ORDER BY first_name
LIMIT 5

5. Hàm Date

Trong PostgreSQL, bạn có thể dễ dàng trích xuất các giá trị từ các cột ngày tháng. Bạn sẽ thấy các hàm date được sử dụng nhiều nhất bên dưới.

SELECT 
date_part('year',hire_date) as year,
date_part('month',hire_date) as month,
date_part('day',hire_date) as day,
date_part('dow',hire_date) as dayofweek,
to_char(hire_date, 'Dy') as day_name,
to_char(hire_date,'Month') as month_name,
hire_date
FROM employees

6. Kết hợp Inner, Left hoặc Right

Mệnh đề Inner Join tạo một bảng mới bằng cách kết hợp các hàng có giá trị phù hợp trong hai hoặc nhiều bảng.

Ví dụ: Truy vấn tất cả thông tin nhân viên và các bộ phận của họ.

Lưu ý: Bảng màu xanh là bảng đầu tiên và bảng màu xanh lá cây là bảng thứ hai của chúng ta.

SELECT * FROM employees e
INNER JOIN departments d
ON e.department = d.department

Left Join trả về tất cả các hàng từ bảng bên trái và các hàng phù hợp từ bảng bên phải. Nếu không tìm thấy hàng phù hợp nào trong bảng bên phải, thì NULL được sử dụng. (ngược lại cho Right Join)

Ví dụ: Viết truy vấn in tất cả các phòng ban từ nhân viên và khớp các phòng ban từ bảng phòng ban.

SELECT e.department,d.department FROM employees e
LEFT JOIN departments  d
ON e.department = d.department

7. Truy vấn con

Truy vấn con là một truy vấn SQL được lồng bên trong một truy vấn lớn hơn.

Một truy vấn con có thể xảy ra trong:

Ví dụ: Truy vấn first_name, bộ phận và mức lương của từng nhân viên và cả mức lương tối đa được đưa ra.

SELECT first_name,department,salary,(SELECT max(salary) FROM employees)
FROM employees

8. Truy vấn con có liên quan

Truy vấn con có liên quan là một cách để đọc mọi hàng trong bảng và so sánh các giá trị trong mỗi hàng với dữ liệu có liên quan. Nó được sử dụng bất cứ khi nào một truy vấn con phải trả về một kết quả khác hoặc tập hợp các kết quả cho mỗi hàng ứng viên được truy vấn chính xem xét.

Ví dụ: Viết câu truy vấn tìm tên, lương, bộ phận và mức lương trung bình theo bộ phận.

SELECT first_name,salary,department,round((SELECT AVG(salary) 
    FROM employees e2
    WHERE e1.department = e2.department
    GROUP BY department )) as avg_salary_by_department
FROM employees e1 
WHERE salary > (SELECT AVG(salary) 
    FROM employees e2
    WHERE e1.department = e2.department
    GROUP BY department )
ORDER BY salary

9. Mệnh đề Case

Câu lệnh CASE được sử dụng để triển khai logic nơi bạn muốn đặt giá trị của một cột tùy thuộc vào giá trị trong các cột khác.

Nó tương tự như câu lệnh IF-ELSE trong Excel.

Ví dụ: Viết một truy vấn để in ra tên, mức lương và mức lương trung bình cũng như một cột mới cho biết liệu mức lương của nhân viên có cao hơn mức trung bình hay không.

SELECT first_name,salary,(SELECT ROUND(AVG(salary)) FROM employees) as average_salary,
(CASE WHEN salary > (SELECT AVG(salary) FROM employees) THEN 'higher_than_average'
ELSE 'lower_than_average' END) as Salary_Case
FROM employees

10. Hàm Windows

Các hàm Windows áp dụng các hàm tổng hợp và xếp hạng trên một cửa sổ cụ thể (tập hợp các hàng). Mệnh đề OVER được sử dụng với các hàm Windows để xác định Windows đó. Mệnh đề OVER thực hiện hai điều:

Các hàm tổng hợp khác nhau như SUM(), COUNT(), AVERAGE(), MAX() và MIN() được áp dụng trên một cửa sổ cụ thể (tập hợp các hàng) được gọi là các hàm cửa sổ tổng hợp.

10.1. Ví dụ về Aggregation

Truy vấn sau đây sẽ cung cấp cho bạn mức lương trung bình cho từng bộ phận.

SELECT first_name,salary,department,
ROUND(AVG(salary) OVER(PARTITION BY department)) as avg_sales_by_dept
FROM employees
ORDER BY salary DESC

10.2. Xếp hạng các giá trị

Hàm Rank() là một hàm cửa sổ chỉ định thứ hạng cho mỗi hàng trong một phân vùng của tập kết quả.

Ví dụ sau đây sắp xếp bảng theo mức lương (giảm dần). Giá trị 1 là giá trị lương cao nhất.

SELECT first_name,salary,RANK() OVER(ORDER BY salary DESC)
FROM employees

Đánh giá post
Exit mobile version