MySQL PHẦN TRĂM HÀNG ĐẦU

Hướng dẫn SQL Server này giải thích cách sử dụng câu lệnh SELECT TOP trong SQL Server (Transact-SQL) với cú pháp và ví dụ

Sự miêu tả

Câu lệnh SELECT TOP của SQL Server (Transact-SQL) được sử dụng để truy xuất các bản ghi từ một hoặc nhiều bảng trong SQL Server và giới hạn số lượng bản ghi được trả về dựa trên một giá trị cố định hoặc tỷ lệ phần trăm

cú pháp

Cú pháp của câu lệnh SELECT TOP trong SQL Server (Transact-SQL) là

SELECT TOP (top_value) [ PERCENT ] [ WITH TIES ]
expressions
FROM tables
[WHERE conditions]
[ORDER BY expression [ ASC | DESC ]];

Tham số hoặc Đối số

TOP (top_value)Trả về số hàng trên cùng trong tập kết quả dựa trên top_value. Ví dụ: TOP(10) sẽ trả về 10 hàng trên cùng từ tập hợp kết quả đầy đủ. PERCENTTùy chọn. Nếu PERCENT được chỉ định, thì các hàng trên cùng dựa trên tỷ lệ phần trăm của tổng số tập hợp kết quả (như được chỉ định bởi top_value). Ví dụ: TOP(10) PERCENT sẽ trả về 10% hàng đầu của tập hợp kết quả đầy đủ. CÓ CÀ VẶTTùy chọn. Nếu mệnh đề VỚI TIES được chỉ định, thì các hàng được gắn ở vị trí cuối cùng trong tập kết quả giới hạn sẽ được trả về. Điều này có thể dẫn đến nhiều hàng được trả về hơn mức cho phép của tham số TOP. biểu thứcCác cột hoặc phép tính mà bạn muốn truy xuất. tableCác bảng mà bạn muốn truy xuất các bản ghi từ. Phải có ít nhất một bảng được liệt kê trong mệnh đề TỪ. điều kiện WHERETùy chọn. Các điều kiện phải được đáp ứng để hồ sơ được chọn. ĐẶT HÀNG BẰNG biểu thứcTùy chọn. Nó được sử dụng trong câu lệnh CHỌN HÀNG ĐẦU để bạn có thể sắp xếp các kết quả và nhắm mục tiêu những bản ghi mà bạn muốn trả về. ASC là thứ tự tăng dần và DESC là thứ tự giảm dần

Ví dụ - Sử dụng từ khóa TOP

Hãy xem một ví dụ về SQL Server, nơi chúng ta sử dụng từ khóa TOP trong câu lệnh SELECT

Ví dụ

SELECT TOP(5)
employee_id, last_name, first_name
FROM employees
WHERE last_name = 'Anderson'
ORDER BY employee_id;

Ví dụ SQL Server SELECT TOP này sẽ chọn 5 bản ghi đầu tiên từ bảng nhân viên trong đó tên_cuối là 'Anderson'. Nếu có các bản ghi khác trong bảng nhân viên có last_name là 'Anderson', chúng sẽ không được trả về bởi câu lệnh SELECT

Bạn có thể sửa đổi ví dụ này để bao gồm mệnh đề VỚI TIES như sau

SELECT TOP(5) WITH TIES
employee_id, last_name, first_name
FROM employees
WHERE last_name = 'Anderson'
ORDER BY employee_id;

Mệnh đề VỚI RÀNG BUỘC sẽ bao gồm các hàng có thể được gắn ở vị trí cuối cùng trong tập kết quả giới hạn. Vì vậy, nếu vị trí cuối cùng trong tập bản ghi SELECT TOP(10) PERCENT là hòa, thì các bản ghi hòa này sẽ được trả về bởi câu lệnh SELECT TOP. Điều này sẽ dẫn đến hơn 10% toàn bộ bộ bản ghi được trả về

Khả năng chọn một tỷ lệ phần trăm bản ghi nhất định từ truy vấn hoặc bảng cơ sở dữ liệu có thể quan trọng khi làm việc với nhiều dữ liệu. May mắn thay, điều này rất dễ thực hiện trong MySQL với hàm RAND() và mệnh đề WHERE

RAND() trả về một số dấu phẩy động ngẫu nhiên trong khoảng từ 0 đến 1, giúp dễ dàng chọn một tỷ lệ phần trăm nhất định của tất cả các bản ghi được trả về từ một truy vấn. Ví dụ: nếu bạn muốn chọn khoảng 5% của tất cả các bản ghi, hãy sử dụng WHERE RAND() < 0.05. Khoảng 25% hồ sơ sử dụng WHERE RAND() < 0.25, v.v.

Dưới đây là một ví dụ về việc chọn 1% của tất cả các bản ghi từ bảng my_data. Bảng này chứa 1000 bản ghi, vì vậy truy vấn này sẽ trả về khoảng 10

Trong một số trường hợp, bạn có thể không quan tâm đến tất cả các hàng được truy vấn trả về, ví dụ: nếu bạn chỉ muốn truy xuất 10 nhân viên hàng đầu mới gia nhập tổ chức, lấy 3 sinh viên hàng đầu theo điểm số hoặc đại loại như vậy

Để xử lý những tình huống như vậy, bạn có thể sử dụng mệnh đề TOP của SQL trong câu lệnh

-- Syntax for SQL Server Database  
SELECT TOP 3 * FROM employees
ORDER BY salary DESC;
0 của mình. Tuy nhiên, mệnh đề TOP chỉ được hỗ trợ bởi hệ thống cơ sở dữ liệu SQL Server và MS Access

MySQL cung cấp mệnh đề

-- Syntax for SQL Server Database  
SELECT TOP 3 * FROM employees
ORDER BY salary DESC;
2 tương đương, trong khi Oracle cung cấp mệnh đề
-- Syntax for SQL Server Database  
SELECT TOP 3 * FROM employees
ORDER BY salary DESC;
3 cho câu lệnh
-- Syntax for SQL Server Database  
SELECT TOP 3 * FROM employees
ORDER BY salary DESC;
0 để hạn chế số lượng hàng được trả về bởi một truy vấn

SQL HÀNG ĐẦU Cú pháp

Mệnh đề SQL TOP được sử dụng để giới hạn số hàng được trả về. Cú pháp cơ bản của nó là

CHỌN HÀNG ĐẦU

-- Syntax for SQL Server Database  
SELECT TOP 3 * FROM employees
ORDER BY salary DESC;
6.
-- Syntax for SQL Server Database  
SELECT TOP 3 * FROM employees
ORDER BY salary DESC;
7
-- Syntax for SQL Server Database  
SELECT TOP 3 * FROM employees
ORDER BY salary DESC;
8 TỪ
-- Syntax for SQL Server Database  
SELECT TOP 3 * FROM employees
ORDER BY salary DESC;
9;

Ở đây, column_list là danh sách các tên cột hoặc trường được phân tách bằng dấu phẩy của một bảng cơ sở dữ liệu (e. g. tên, tuổi, quốc gia, v.v. ) có giá trị bạn muốn tìm nạp. Hãy xem nó hoạt động như thế nào

Giả sử chúng tôi có một bảng nhân viên trong cơ sở dữ liệu của mình với các bản ghi sau

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Ethan Hunt   | 2001-05-01 |   5000 |       4 |
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      5 | Martin Blank | 2008-06-24 |   5600 |    NULL |
+--------+--------------+------------+--------+---------+

Câu lệnh sau đây trả về ba nhân viên được trả lương cao nhất từ ​​bảng nhân viên

-- Syntax for SQL Server Database  
SELECT TOP 3 * FROM employees
ORDER BY salary DESC;

Tập kết quả trả về sẽ giống như thế này

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
+--------+--------------+------------+--------+---------+

Bạn có thể tùy chọn sử dụng từ khóa

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
+--------+--------------+------------+--------+---------+
0 sau giá trị cố định trong mệnh đề TOP, nếu bạn chỉ muốn truy xuất phần trăm số hàng thay vì số lượng hàng cố định. Các giá trị phân số được làm tròn lên đến giá trị số nguyên tiếp theo (e. g. 1. 5 làm tròn thành 2)

Câu lệnh sau trả về top 30% nhân viên được trả lương cao nhất

-- Syntax for SQL Server Database  
SELECT TOP 30 PERCENT * FROM employees
ORDER BY salary DESC;

Tập kết quả được trả về bởi truy vấn trên sẽ như thế này

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
+--------+--------------+------------+--------+---------+

Cú pháp GIỚI HẠN MySQL

Mệnh đề

-- Syntax for SQL Server Database  
SELECT TOP 3 * FROM employees
ORDER BY salary DESC;
2 của MySQL thực hiện công việc tương tự như mệnh đề TOP của SQL. Cú pháp cơ bản của nó là

CHỌN

-- Syntax for SQL Server Database  
SELECT TOP 3 * FROM employees
ORDER BY salary DESC;
8 TỪ
-- Syntax for SQL Server Database  
SELECT TOP 3 * FROM employees
ORDER BY salary DESC;
9 SỐ GIỚI HẠN;

Câu lệnh sau đây trả về ba nhân viên được trả lương cao nhất từ ​​bảng nhân viên

-- Syntax for MySQL Database 
SELECT * FROM employees 
ORDER BY salary DESC LIMIT 3;

Sau khi thực hiện, bạn sẽ nhận được kết quả như thế này

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
+--------+--------------+------------+--------+---------+

Ghi chú. Trong câu lệnh

-- Syntax for SQL Server Database  
SELECT TOP 3 * FROM employees
ORDER BY salary DESC;
0, luôn sử dụng mệnh đề
+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
+--------+--------------+------------+--------+---------+
7 với mệnh đề
-- Syntax for SQL Server Database  
SELECT TOP 3 * FROM employees
ORDER BY salary DESC;
2. Nếu không, bạn có thể không nhận được kết quả mong muốn

Đặt Row Offset trong LIMIT khoản

Mệnh đề

-- Syntax for SQL Server Database  
SELECT TOP 3 * FROM employees
ORDER BY salary DESC;
2 chấp nhận tham số thứ hai tùy chọn

Khi hai tham số được chỉ định, tham số đầu tiên chỉ định phần bù của hàng đầu tiên để trả về i. e. điểm bắt đầu, trong khi tham số thứ hai chỉ định số hàng tối đa sẽ trả về. Phần bù của hàng ban đầu là

-- Syntax for SQL Server Database  
SELECT TOP 30 PERCENT * FROM employees
ORDER BY salary DESC;
0 (không phải
-- Syntax for SQL Server Database  
SELECT TOP 30 PERCENT * FROM employees
ORDER BY salary DESC;
1)

Làm cách nào để chọn 10 phần trăm hàng đầu trong MySQL?

CHỌN @rows. = ROUND(COUNT(*) * 10/100) TỪ bảng ;

Làm cách nào để chọn phần trăm hàng đầu trong MySQL?

Không có cú pháp TOP n PERCENT trong MySQL

Làm cách nào để có được 50 phần trăm bản ghi trong MySQL?

Đại loại như thế này. .
tìm tổng số bản ghi/2
giá trị đó phải được áp dụng trong mệnh đề giới hạn. SET @count = (CHỌN COUNT(*)/2 TỪ bảng);

Bạn có thể sử dụng hàng đầu trong MySQL không?

Lưu ý − Tất cả cơ sở dữ liệu không hỗ trợ mệnh đề TOP . Ví dụ: MySQL hỗ trợ mệnh đề LIMIT để tìm nạp số lượng bản ghi hạn chế trong khi Oracle sử dụng lệnh ROWNUM để tìm nạp một số lượng bản ghi hạn chế.