Sql học sinh có điểm trung bình cao năm 2024

Truy vấn cơ sở dữ liệu là việc chúng ta thường xuyên thực hiện khi lập trình, tuy nhiên, đối với việc lập trình framework như Rails chẳng hạn, nó đã hỗ trợ chúng ta rất nhiều trong việc viết câu lệnh truy vấn.Sau đây mình xin trình bày một số kiểu query hay được sử dụng bằng SQL query thuần.

1. Tìm Salary cao thứ 2 trong bảng Employee.

Đây là bài toán phổ biến, mình thấy nó có khá nhiều chỗ khắc tới nó theo tìm hiểu trên mạng. Đối với yêu cầu này, ta có thể wủ dụng Subquery với mệnh đề "IN" để giải quyết vấn đề:

select MAX(salary) from employees WHERE salary NOT IN (select MAX(salary) from employees ); 

hoặc có thể sử dụng toán tử "<" để thay thế cho "IN":

SELECT MAX(salary) FROM employees WHERE salary < (SELECT MAX(salary) FROM employees);

hoặc sử dụng từ khóa LIMIT trong Mysql:

SELECT salary  FROM (SELECT salary FROM Employee ORDER BY salary DESC LIMIT 2) AS emp ORDER BY salary LIMIT 1;

2.Tìm MAX Salary từ mỗi Department.

Ở đây, ta có thể sử dụng "GROUP BY" theo Department(DeptID) kết hợp với hàm MAX() để tìm ra Salary lớn nhất trong mỗi group được nhóm ra đối với mỗi department.

SELECT DeptID, MAX(Salary) FROM Employee  GROUP BY DeptID;

3.Hiển thị current date

SQL cung cấp function GetDate() trả về thời gian hiện tại, ta có thể sử dụng function này như sau:

SELECT GETDATE() AS CurrentDateTime;

4.Check định dạng date có phải là định đạng date cho trước hay không.

SQL cung cấp function IsDate() để check định dạng của date cho trước, nó sẽ trả về giá trị 1(true) hoặc 0(false), ta có thể sử dụng như sau:

SELECT ISDATE('26/05/92') AS "MM/DD/YY";

5.In ra tên của các employee khác nhau có ngày sinh(DOB) nằm trong khoảng thời gian nhất định nào đó.

Để giải quyết yêu cầu trên, ta có thể sử dụng mệnh đề BETWEEN để lấy tất cả các records có DOB thỏa mãn khoảng thời gian cố định, chảng hạn như:

SELECT DISTINCT EmpName FROM Employees WHERE DOB  BETWEEN ‘01/01/1960’ AND ‘31/12/1975’;

6.Tìm số lượng employees theo giới tính mà có ngày sinh (DOB) nằm trong khoảng thời gian cố định cho trước.

Ta có thể sử dụng BETWEEN như trên để lấy số employees theo khoảng thời gian và GROUP BY để nhóm employees theo giới tính, câu lệnh như sau:

SELECT COUNT(*), sex from Employees WHERE DOB BETWEEN '01/01/1960' AND '31/12/1975' GROUP BY sex;

7.Tìm số employees có Salary lớn hơn hoặc bằng 10000.

Các toán tử điều kiện cũng là một phần hay được sử dụng trong SQL, đối với yêu cầu trên ta có câu lệnh sau:

SELECT EmpName FROM  Employees WHERE  Salary>=10000;

8.Tìm tên của employee bắt đầu bằng ký tự "M".

Ta có thể sử dụng toán tử "LIKE" để giải quyết yêu cầu này:

SELECT * FROM Employees WHERE EmpName like 'M%';

9.Tìm tên của employee có chưa từ "Joe", chấp nhận cả những trường hợp như "JOE", "Joe" và "joe".

Ngoài việc sử dụng toán tử "LIKE" như trên, sử dụng kết hợp với hàm UPPER() là một cách hiệu quả cho yêu cầu trên:

SELECT MAX(salary) FROM employees WHERE salary < (SELECT MAX(salary) FROM employees);

0

10.Lâý năm từ ngày tháng bằng SQL query.

Sử dụng function GetDate() để lấy về ngày tháng hiện tại, cụ thể như sau:

SELECT MAX(salary) FROM employees WHERE salary < (SELECT MAX(salary) FROM employees);

1

11.Tìm những row bị trùng lặp và xóa chúng.

  • Ta có thể dùng câu query sau để tìm ra các bản ghi khác nhau:

SELECT MAX(salary) FROM employees WHERE salary < (SELECT MAX(salary) FROM employees);

2

  • Và câu query sau để xóa các bản ghi trùng lặp:

SELECT MAX(salary) FROM employees WHERE salary < (SELECT MAX(salary) FROM employees);

3

12. Một table có 2 trường là Student và Marks(điểm), hãy tìm tất cả các Student có điểm lớn hơn điểm trung bình.

Ta có thể sử dụng Subquery để xử lý yêu cầu tren, cụ thể như sau:

SELECT MAX(salary) FROM employees WHERE salary < (SELECT MAX(salary) FROM employees);

4

13.Tìm tất cả các employees đồng thời là manager.

giả sử ta có bảng employee với một trường là mgr_id, là id của Manager của emplyee tương ứng, ở đây chúng ta sẽ dùng self-join.Trong self-join, ta có thể join 2 trường của cùng một bảng để lấy ra thông tin như sau:

  • * Actions
    Automate any workflow  
    
    • Packages
      Host and manage packages  
    • Security Find and fix vulnerabilities
    • Codespaces Instant dev environments
    • Copilot Write better code with AI
    • Code review Manage code changes
    • Issues Plan and track work
    • Discussions Collaborate outside of code Explore
    • All features
    • Documentation
    • GitHub Skills
    • Blog
  • For
    • Enterprise
    • Teams
    • Startups
    • Education By Solution
    • CI/CD & Automation
    • DevOps
    • DevSecOps Resources
    • Learning Pathways
    • White papers, Ebooks, Webinars
    • Customer Stories
    • Partners
  • * GitHub Sponsors
    Fund open source developers  
    
    • The ReadME Project
      GitHub community articles  
      
      Repositories
    • Topics
    • Trending
    • Collections
  • Pricing

Provide feedback

We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Saved searches

Use saved searches to filter your results more quickly

Name

Query

To see all available qualifiers, see our documentation.

Sign in

Sign up