Các hàm về Ranking mới trong SQL Server 2005
Số trang: 9
Loại file: pdf
Dung lượng: 137.29 KB
Lượt xem: 11
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Cùng với SQL Server 2005, Microsoft đã giới thiệu một số tính năng mới và những tính năng này sẽ giúp cho chuyên viên về DBA hay SQL Server dễ dàng hơn trong việc viết mã và duy trì cơ sở dữ liệu SQL Server. Bài này sẽ thảo luận về các hàm ranking mới được cung cấp trong SQL Server 2005. Các tính năng mới đó sẽ giúp bạn dễ dàng viết mã T-SQL để kết hợp xếp loại được tập hợp kết quả của bạn. Bài sẽ hướng dẫn từng phần trong các hàm ranking mới và...
Nội dung trích xuất từ tài liệu:
Các hàm về Ranking mới trong SQL Server 2005 Các hàm Ranking mới trong SQL Server 2005Cùng với SQL Server 2005, Microsoft đã giới thiệu một số tính năng mới vànhững tính năng này sẽ giúp cho chuyên viên về DBA hay SQL Server dễ dànghơn trong việc viết mã và duy trì c ơ sở dữ liệu SQL Server. Bài này sẽ thảoluận về các hàm ranking mới được cung cấp trong SQL Server 2005. Các tínhnăng mới đó sẽ giúp bạn dễ dàng viết mã T-SQL để kết hợp xếp loại được tậphợp kết quả của bạn. Bài sẽ hướng dẫn từng phần trong các hàm ranking mớivà cung cấp một số ví dụ nhằm minh họa hoạt động của hàm.Các hàm Ranking là gì?Các hàm Ranking cho phép bạn có thể đánh số liên tục (xếp loại) cho các tậphợp kết quả. Các hàm này có thể được sử dụng để cung cấp số thứ tự trong hệthống đánh số tuần tự khác nhau. Có thể hiểu đơn giản như sau: bạn có từngcon số nằm trên từng dòng liên tục, tại dòng thứ nhất xếp loại số 1, dòng thứ 2xếp loại số là 2… Bạn có thể sử dụng hàm ranking theo các nhóm số tuần tự,mỗi một nhóm sẽ được đánh số theo l ược đồ 1,2,3 và nhóm tiếp theo lại bắtđầu bằng 1,2,3…Dữ liệu chạy thử cho các ví dụĐể có một vài ví dụ cho từng hàm ranking, tôi c ần thiết lập một số dữ liệu chạythử. Trong dữ liệu chạy thử, tôi sử dụng một bảng “Person” khá đơn giản.Bảng sẽ bao gồm 3 cột “FirstName”, “Age” và “Gender”. Đoạn mã dưới nhằmtạo ra và ghi lại dữ liệu chạy thử vào file.SET NOCOUNT ONCREATE TABLE Person(FirstName VARCHAR(10),Age INT,Gender CHAR(1))INSERT INTO Person VALUES (Ted,23,M)INSERT INTO Person VALUES (John,40,M)INSERT INTO Person VALUES (George,6,M)INSERT INTO Person VALUES (Mary,11,F)INSERT INTO Person VALUES (Sam,17,M)INSERT INTO Person VALUES (Doris,6,F)INSERT INTO Person VALUES (Frank,38,M)INSERT INTO Person VALUES (Larry,5,M)INSERT INTO Person VALUES (Sue,29,F)INSERT INTO Person VALUES (Sherry,11,F)INSERT INTO Person VALUES (Marty,23,F)Hàm ROW_NUMBERHàm đầu tiên tôi muốn nói tới là ROW_NUMBER. Hàm này trả lại một dãy sốtuần tự bắt đầu từ 1 cho mỗi d òng hay nhóm trong tập hợp kết quả. HàmROW_NUMBER sẽ có cú pháp sau:ROW_NUMBER ( ) OVER ( [ ] )Trong đó:là cột hay tập hợp các cột được sử dụng để quyết định việc gộp nhóm cho hàmROW_NUMBER áp dụng cho việc đánh số tuần tự.là một cột hay tập hợp các cột đ ược sử dụng để sắp xếp tập hợp kết quả trongnhóm (partition)Để hiểu thêm về cách sử dụng hàm ROW_NUMBER, ví dụ dưới sẽ đánh sốliên tục cho tất cả các dòng trong bảng Person và sắp xếp chúng theo trườngAgeSELECT ROW_NUMBER() OVER (ORDER BY Age) AS [Row Number byAge], FirstName, Age FROM PersonVà đây là tập hợp kết quả m ã T-SQL trên:Row Number by Age FirstName Age-------------------- ---------- ------1 Larry 52 Doris 63 George 64 Mary 115 Sherry 116 Sam 177 Ted 238 Marty 239 Sue 2910 Frank 3811 John 40Bạn có thể thấy tôi đã đánh số liên tục cho toàn bộ các dòng trong bảng Personbắt đầu từ số 1, và tập hợp kết quả được sắp xếp theo cột Age. Sự sắp xếp nàyđược hoàn thiện là do tiêu chuẩn “ORDER BY Age” trong mệnh đề ORDERBY của hàm ROW_NUMBER.Giả sử bạn không muốn tập hợp kết quả của bạn đ ược sắp xếp mà muốn đưabảng trở lại sắp xếp theo số bản ghi của từng d òng. Hàm ROW_NUMBER lạiluôn yêu cầu phải có mệnh đề ORDER BY, vậy bạn cần phải đ ưa một giá trịnào đó vào trong mệnh đề này. Trong hàm truy vấn bên dưới tôi đã chỉ định“SELECT 1” vào trong mệnh đề ORDER BY, điều n ày sẽ chỉ trả lại kết quả làbảng như đã lưu trữ ban đầu và tất nhiên cách đánh số tuần tự vẫn bắt đầu từ 1:SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS [RowNumber by Record Set], FirstName, Age FROM PersonĐây là tập hợp kết quả khi chạy hàm truy vấn trên:Row Number by Record FirstName Age-------------------- ---------- ------1 Ted 232 John 403 George 64 Mary 115 Sam 176 Doris 67 Frank 388 Larry 59 Sue 2910 Sherry 1111 Marty 23Hàm ROW_NUMBER không chỉ cho phép bạn sắp xếp toàn bộ tập hợp dòngmà còn có thể sử dụng mệnh đề PARTITION để lọc ra nhóm dòng cần đánhsố. Các dòng sẽ được đánh số tuần tự trong từng giá trị PARTITION độc nhất.Các dãy số được đánh sẽ luôn bắt đầu từ 1 cho từng giá trị PARTITION m ớitrong tập hợp bản ghi của bạn. Hãy xem hàm truy vấn dưới đâySELECT ROW_NUMBER() OVER (PARTITION BY Gender ORDER BYAge) AS [Partition by Gender], FirstName, Age, Gender FROM PersonKhi chạy truy vấn trên, tập hợp kết quả sẽ ra như sau:Partition by Gender FirstName Age ...
Nội dung trích xuất từ tài liệu:
Các hàm về Ranking mới trong SQL Server 2005 Các hàm Ranking mới trong SQL Server 2005Cùng với SQL Server 2005, Microsoft đã giới thiệu một số tính năng mới vànhững tính năng này sẽ giúp cho chuyên viên về DBA hay SQL Server dễ dànghơn trong việc viết mã và duy trì c ơ sở dữ liệu SQL Server. Bài này sẽ thảoluận về các hàm ranking mới được cung cấp trong SQL Server 2005. Các tínhnăng mới đó sẽ giúp bạn dễ dàng viết mã T-SQL để kết hợp xếp loại được tậphợp kết quả của bạn. Bài sẽ hướng dẫn từng phần trong các hàm ranking mớivà cung cấp một số ví dụ nhằm minh họa hoạt động của hàm.Các hàm Ranking là gì?Các hàm Ranking cho phép bạn có thể đánh số liên tục (xếp loại) cho các tậphợp kết quả. Các hàm này có thể được sử dụng để cung cấp số thứ tự trong hệthống đánh số tuần tự khác nhau. Có thể hiểu đơn giản như sau: bạn có từngcon số nằm trên từng dòng liên tục, tại dòng thứ nhất xếp loại số 1, dòng thứ 2xếp loại số là 2… Bạn có thể sử dụng hàm ranking theo các nhóm số tuần tự,mỗi một nhóm sẽ được đánh số theo l ược đồ 1,2,3 và nhóm tiếp theo lại bắtđầu bằng 1,2,3…Dữ liệu chạy thử cho các ví dụĐể có một vài ví dụ cho từng hàm ranking, tôi c ần thiết lập một số dữ liệu chạythử. Trong dữ liệu chạy thử, tôi sử dụng một bảng “Person” khá đơn giản.Bảng sẽ bao gồm 3 cột “FirstName”, “Age” và “Gender”. Đoạn mã dưới nhằmtạo ra và ghi lại dữ liệu chạy thử vào file.SET NOCOUNT ONCREATE TABLE Person(FirstName VARCHAR(10),Age INT,Gender CHAR(1))INSERT INTO Person VALUES (Ted,23,M)INSERT INTO Person VALUES (John,40,M)INSERT INTO Person VALUES (George,6,M)INSERT INTO Person VALUES (Mary,11,F)INSERT INTO Person VALUES (Sam,17,M)INSERT INTO Person VALUES (Doris,6,F)INSERT INTO Person VALUES (Frank,38,M)INSERT INTO Person VALUES (Larry,5,M)INSERT INTO Person VALUES (Sue,29,F)INSERT INTO Person VALUES (Sherry,11,F)INSERT INTO Person VALUES (Marty,23,F)Hàm ROW_NUMBERHàm đầu tiên tôi muốn nói tới là ROW_NUMBER. Hàm này trả lại một dãy sốtuần tự bắt đầu từ 1 cho mỗi d òng hay nhóm trong tập hợp kết quả. HàmROW_NUMBER sẽ có cú pháp sau:ROW_NUMBER ( ) OVER ( [ ] )Trong đó:là cột hay tập hợp các cột được sử dụng để quyết định việc gộp nhóm cho hàmROW_NUMBER áp dụng cho việc đánh số tuần tự.là một cột hay tập hợp các cột đ ược sử dụng để sắp xếp tập hợp kết quả trongnhóm (partition)Để hiểu thêm về cách sử dụng hàm ROW_NUMBER, ví dụ dưới sẽ đánh sốliên tục cho tất cả các dòng trong bảng Person và sắp xếp chúng theo trườngAgeSELECT ROW_NUMBER() OVER (ORDER BY Age) AS [Row Number byAge], FirstName, Age FROM PersonVà đây là tập hợp kết quả m ã T-SQL trên:Row Number by Age FirstName Age-------------------- ---------- ------1 Larry 52 Doris 63 George 64 Mary 115 Sherry 116 Sam 177 Ted 238 Marty 239 Sue 2910 Frank 3811 John 40Bạn có thể thấy tôi đã đánh số liên tục cho toàn bộ các dòng trong bảng Personbắt đầu từ số 1, và tập hợp kết quả được sắp xếp theo cột Age. Sự sắp xếp nàyđược hoàn thiện là do tiêu chuẩn “ORDER BY Age” trong mệnh đề ORDERBY của hàm ROW_NUMBER.Giả sử bạn không muốn tập hợp kết quả của bạn đ ược sắp xếp mà muốn đưabảng trở lại sắp xếp theo số bản ghi của từng d òng. Hàm ROW_NUMBER lạiluôn yêu cầu phải có mệnh đề ORDER BY, vậy bạn cần phải đ ưa một giá trịnào đó vào trong mệnh đề này. Trong hàm truy vấn bên dưới tôi đã chỉ định“SELECT 1” vào trong mệnh đề ORDER BY, điều n ày sẽ chỉ trả lại kết quả làbảng như đã lưu trữ ban đầu và tất nhiên cách đánh số tuần tự vẫn bắt đầu từ 1:SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS [RowNumber by Record Set], FirstName, Age FROM PersonĐây là tập hợp kết quả khi chạy hàm truy vấn trên:Row Number by Record FirstName Age-------------------- ---------- ------1 Ted 232 John 403 George 64 Mary 115 Sam 176 Doris 67 Frank 388 Larry 59 Sue 2910 Sherry 1111 Marty 23Hàm ROW_NUMBER không chỉ cho phép bạn sắp xếp toàn bộ tập hợp dòngmà còn có thể sử dụng mệnh đề PARTITION để lọc ra nhóm dòng cần đánhsố. Các dòng sẽ được đánh số tuần tự trong từng giá trị PARTITION độc nhất.Các dãy số được đánh sẽ luôn bắt đầu từ 1 cho từng giá trị PARTITION m ớitrong tập hợp bản ghi của bạn. Hãy xem hàm truy vấn dưới đâySELECT ROW_NUMBER() OVER (PARTITION BY Gender ORDER BYAge) AS [Partition by Gender], FirstName, Age, Gender FROM PersonKhi chạy truy vấn trên, tập hợp kết quả sẽ ra như sau:Partition by Gender FirstName Age ...
Tìm kiếm theo từ khóa liên quan:
Lý thuyết tin học SQL Tin học đại cương giáo trình Tin học đại cương bài giảng Tin học đại cương tài liệu Tin học đại cương lý thuyết Tin học đại cươngGợi ý tài liệu liên quan:
-
Ứng dụng công cụ Quizizz thiết kế trò chơi học tập trong giảng dạy học phần tin học đại cương
12 trang 301 0 0 -
Tài liệu hướng dẫn thực hành Tin học đại cương - ĐH Bách Khoa Hà Nội
40 trang 257 0 0 -
Giáo trình Tin học đại cương part 7
19 trang 233 0 0 -
Giáo trình Tin học đại cương: Phần 1 - ĐH Kinh tế Quốc Dân
130 trang 156 0 0 -
Giáo trình Tin học đại cương (Tái bản năm 2020): Phần 1 - PGS.TS. Nguyễn Thị Thu Thủy (Chủ biên)
105 trang 142 0 0 -
Giáo trình Tin học đại cương: Phần 1 - Vi Hồng Thắm
90 trang 129 0 0 -
Hướng dẫn thực hành lập trình C trên Visual Studio
9 trang 127 0 0 -
Giáo trình Tin học đại cương: Phần 2 - Trần Đình Khang
118 trang 118 0 0 -
Trắc nghiệm và đáp án hệ cơ sở dữ liệu - ĐH Công Nghiệp Tp. Hồ Chí Minh
63 trang 116 0 0 -
Quản trị người dùng trong Exchange 2007 bằng Powershell
9 trang 107 0 0