Select top cao nhất with ties trong sql

SELECT TOP là một mệnh đề khá hữu ích khi phải làm việc với các cơ sở dữ liệu có số lượng bản ghi lớn. Chính vì vậy, bài viết lần này, BAC muốn gửi đến bạn đọc những kiến thức về SELECT TOP và các mệnh đề dùng chung.

1. Mệnh đề SELECT TOP

Mệnh đề SELECT TOP được sử dụng để xác định số lượng các bản ghi trả về.

SELECT TOP rất hữu ích khi phải làm việc với các cơ sở dữ liệu lớn với hàng nghìn bản ghi. Việc trả về một số lượng bản ghi lớn như vậy có thể ảnh hưởng đến hiệu suất.

Lưu ý: Không phải tất cả hệ thống cơ sở dữ liệu đều hỗ trợ mệnh đề SELECT TOP. MySQL hỗ trợ mệnh đề LIMIT để lấy số lượng bản ghi giới hạn, trong khi ORACLE dùng FETCH FIRST n ROWS ONLY và ROWNUM.

  • Cú pháp:

SELECT TOP số lượng

FROM tên bảng

WHERE điều kiện;

2. Ví dụ SELECT TOP

Để thực hiện ví dụ này, bạn cần nhập cơ sở dữ liệu mẫu Northwind vào SQL Server Management Studio. Hãy xem bài viết hướng dẫn ngay dưới đây:

Tham khảo: Hướng dẫn tải và cài đặt dữ liệu mẫu Northwind trong SQL Server Management Studio

Sau khi đã hoàn tất việc cài đặt cơ sở dữ liệu, hãy bắt đầu từ câu lệnh đơn giản nhất. Câu lệnh này sẽ lấy ra 3 dòng đầu tiên của bảng Customers.

SELECT TOP 3 * FROM Customers;

Ngoài số lượng, bạn có thể sử dụng từ khóa PERCENT để lấy phần trăm. Câu lệnh dưới đây sẽ lấy ra 50% bản ghi từ bảng “Customer”.

SELECT TOP 50 PERCENT * FROM Customers;

Cũng giống như các câu lệnh SELECT khác, bạn có thể thêm mệnh đề WHERE để bổ sung điều kiện. Câu lệnh dưới đây sẽ lấy ra 3 khách hàng đầu tiên có quốc gia là Đức.

SELECT TOP 3 * FROM Customers

WHERE Country='Germany';

Như vậy, so với hai câu lệnh SELECT và SELECT DISTINCT thì SELECT TOP có cấu trúc khá tương tự. Tuy nhiên, nếu vận dụng một cách linh hoạt, bạn có thể thấy được những ứng dụng rất thực tế của các câu lệnh này. Đừng quên đón đọc các nội dung mới nhất tại website bacs.vn, để không bỏ lỡ các kiến thức quan trọng của SQL.

Nguồn tham khảo:

//www.w3schools.com/

Nhu cầu đào tạo doanh nghiệp

BAC là đơn vị đào tạo BA đầu tiên tại Việt Nam. Đối tác chính thức của IIBA quốc tế. Ngoài các khóa học public, BAC còn có các khóa học in house dành riêng cho từng doanh nghiệp. Chương trình được thiết kế riêng theo yêu cầu của doanh nghiệp, giúp doanh nghiệp giải quyết những khó khăn và tư vấn phát triển.

Tham khảo chương trình đào tạo:

Click để đọc tiếp

  • Những ngôn ngữ lập trình hữu ích cho các nhà phân tích nghiệp vụ Các chuyên viên phân tích nghiệp vụ thường xuyên tiếp xúc với các bảng tính và thuyết trình. Tuy nhiên, các hoạt động phân tích hiện nay cũng trở nên phức tạp như phân tích dữ liệu và các luồng dữ liệu phức tạp thì các Business Analyst nên trang bị những ngôn ngữ lập trình để thuận lợi phát triển sự nghiệp.
3 công cụ Business Analyst thường xuyên sử dụng

Trong bài viết sau, chúng ta sẽ tìm hiểu về 3 công cụ Business Analyst thường xuyên sử dụng: Process Modelling, Use Cases và Requirements Attributes Table. Cùng BAC tìm hiểu sâu hơn chủ đề này với cách tiếp cận tốt nhất từ nguồn tài liệu BABOK Guide nhé.

Trong SQL Server, lệnh SELECT TOP được dùng để lấy bản ghi từ 1 hoặc nhiều bảng trong SQL Server và giới hạn số bản ghi trả về dựa trên giá trị hoặc phần trăm cố định.

Cú pháp lệnh SELECT TOP

SELECT TOP [giatri_dau] [PERCENT] [WIT`H TIES] `bieu_thuc FROM bang [WHERE dieu_kien] [ORDER BY bieu_thuc [ ASC | DESC ]];

Tên biến hoặc giá trị biến

TOP [giatri_dau]

Trả về kết quả dựa trên giatri_dau. Ví dụ TOP[10] sẽ chèn 10 hàng đầu tiên từ bộ kết quả.

PERCENT

Tùy chọn. Nếu được nêu ra cụ thể thì các hàng đầu tiên dựa trên số phần trăm giatri_dau của bộ kết quả. Ví dụ như TOP[10] PERCENT sẽ chèn 10% giá trị đầu trong bộ kết quả.

WITH TIES

Tùy chọn. Nếu dùng mệnh đề này, các hàng có giá trị giống với hàng cuối cùng trong bộ kết quả sẽ được trả về. Điều này có thể gây ra tình huống số hàng trả về nhiều hơn biến TOP cho phép.

bieu_thuc

Cột hoặc giá trị tính toán cần lấy về

bang

Bảng muốn lấy bản ghi từ đó. Phải có ít nhất 1 bảng trong mệnh đề FROM.

WHERE dieu_kien

Tùy chọn. Điều kiện phải được đáp ứng để bản ghi được chọn.

ORDER BY bieu_thuc

Tùy chọn. Dùng để xếp thứ tự kết quả. ASC theo thứ tự tăng dần, DESC theo thứ tự giảm dần.

Ví dụ – dùng từ khóa TOP

SELECT TO`P[5] `nhanvien_id, ho, ten FROM nhanvien WHERE ho = ‘Anderson’ `ORDER BY nh`anvien_id;

Ví dụ trên sẽ lấy về 5 bản ghi đầu tiên trên bảng nhanvien khi có họ là Anderson. Nếu các bản ghi khác cũng có họ nhân viên là Anderson thì cũng không được trả về trong lệnh SELECT trên.

Ví dụ trên có thể chỉnh sửa 1 chút bằng cách thêm mệnh đề WITH TIES

SELECT TOP[5`] WITH TIES` nhanvien_id, ho, ten FROM nhanvien WHERE ho = ‘Anderson’ `ORDER BY nhanv`ien_id;

Ví dụ này sẽ trả về các hàng giống với hàng cuối trong bộ kết quả.

Ví dụ – dùng từ khóa TOP PERCENT

SELEC`T TOP[10] PERCENT `nhanvien_id, ho, ten FROM nhanvien WHERE ho = ‘Anderson’ `ORDER B`Y nhanvien_id;

Ví dụ này sẽ trả về bộ kết quả là 10% đầu tiên bản ghi trong bảng nhân viên trong số các nhân viên có họ là Anderson. 90% còn lại sẽ không được trả về.

SELECT TO`P[10] PERCENT WITH TIES `nhanvien_id, ho, ten FROM nhanvien WHERE ho = ‘Anderson’ `ORDER BY nha`nvien_id;

Với WITH TIES, kết quả trả về sẽ có các hàng giống với hàng cuối trong bộ kết quả. Bộ kết quả khi đó sẽ nhiều hơn 10%.

Chủ Đề