Nesting multiple functions – Các hàm lồng nhau trong SQL

Trong SQL, việc lồng nhiều hàm với nhau là một kỹ thuật quan trọng giúp bạn thực hiện các thao tác phức tạp trên dữ liệu. Bạn có thể kết hợp nhiều hàm toán học, chuỗi, ngày tháng và các hàm tổng hợp để tạo ra các truy vấn mạnh mẽ và hiệu quả.

Nesting multiple functions – Các hàm lồng nhau trong SQL

Ví dụ về việc lồng nhiều hàm với nhau

1. Sử dụng các hàm chuỗi

Giả sử bạn có một cột chứa tên đầy đủ của nhân viên và bạn muốn lấy chữ cái đầu tiên của tên và họ của mỗi nhân viên.

SELECT UPPER(SUBSTR(first_name, 1, 1)) || UPPER(SUBSTR(last_name, 1, 1)) AS initials
FROM Employees;

Trong ví dụ này:

  • SUBSTR(first_name, 1, 1) lấy ký tự đầu tiên của first_name.
  • UPPER(SUBSTR(first_name, 1, 1)) chuyển ký tự đầu tiên thành chữ hoa.
  • SUBSTR(last_name, 1, 1) lấy ký tự đầu tiên của last_name.
  • UPPER(SUBSTR(last_name, 1, 1)) chuyển ký tự đầu tiên thành chữ hoa.
  • || là toán tử nối chuỗi trong SQL.

2. Sử dụng các hàm ngày tháng

Giả sử bạn muốn tính số năm làm việc của nhân viên tính đến ngày hiện tại.

SELECT first_name, last_name, ROUND((SYSDATE - hire_date) / 365) AS years_of_service
FROM Employees;

Trong ví dụ này:

  • SYSDATE trả về ngày hiện tại.
  • SYSDATE – hire_date tính số ngày kể từ khi nhân viên được thuê.
  • (SYSDATE – hire_date) / 365 chuyển đổi số ngày thành số năm.
  • ROUND làm tròn số năm đến số nguyên gần nhất.

3. Sử dụng các hàm tổng hợp và phân tích

Giả sử bạn muốn tính lương trung bình của mỗi bộ phận và sau đó tìm ra các bộ phận có lương trung bình cao hơn mức lương trung bình toàn công ty.

SELECT department_id, avg_salary
FROM (
SELECT department_id, AVG(salary) OVER (PARTITION BY department_id) AS avg_salary
FROM Employees
) dept_avg
WHERE avg_salary > (
SELECT AVG(salary)
FROM Employees
);

Trong ví dụ này:

  • AVG(salary) OVER (PARTITION BY department_id) tính lương trung bình cho mỗi bộ phận.
  • Subquery đầu tiên tạo một bảng tạm thời dept_avg chứa department_id và avg_salary.
  • Subquery thứ hai tính lương trung bình toàn công ty.
  • WHERE avg_salary > (SELECT AVG(salary) FROM Employees) lọc ra các bộ phận có lương trung bình cao hơn lương trung bình toàn công ty.

Tóm lại:

Việc lồng nhiều hàm với nhau trong SQL cho phép bạn thực hiện các thao tác phức tạp và mạnh mẽ trên dữ liệu của mình. Bạn có thể sử dụng các hàm chuỗi, hàm ngày tháng, hàm tổng hợp và các hàm phân tích để tạo ra các truy vấn phù hợp với nhu cầu của mình. Hãy đảm bảo rằng bạn hiểu rõ cách từng hàm hoạt động và cách chúng kết hợp với nhau để đảm bảo kết quả chính xác và hiệu quả.

 

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận