NHóm hàm tổng hợp trong SQL

Hàm Tổng hợp AGGREGATE trong SQL

Giới thiệu

Trong chương này, chúng ta sẽ tìm hiểu cách sử dụng câu lệnh SQL Aggregate với nhiều tùy chọn khác nhau.

Hàm Tổng hợp SQL Aggregate

Hàm Tổng hợp được sử dụng để thực hiện các phép tính trên một tập hợp các giá trị và trả về một giá trị duy nhất, bỏ qua tất cả các giá trị null.
Các hàm Aggregate thường được sử dụng với mệnh đề group by của câu lệnh select trong SQL
Hàm tổng hợp quản lý cơ sở dữ liệu là một hàm trong đó các giá trị của nhiều hàng được nhóm lại với nhau làm đầu vào theo các tiêu chí nhất định để tạo thành một giá trị duy nhất có ý nghĩa quan trọng hơn
Tất cả các câu lệnh tổng hợp đều mang tính xác định. Nói cách khác, các hàm tổng hợp trả về cùng một giá trị mỗi lần chúng được gọi khi được gọi với một tập hợp cụ thể các giá trị đầu vào.
Xem các hàm xác định và không xác định để biết thêm thông tin về hàm xác định Mệnh đề over có thể theo sau tất cả các hàm tổng hợp, ngoại trừ các hàm STRING_AGG, nhóm hoặc GROUPING_ID
Các hàm tổng hợp chúng ta chỉ có thể sử dụng các biểu thức trong các trường hợp sau
  • Danh sách chọn của câu lệnh chọn (hoặc truy vấn con hoặc truy vấn bên ngoài).
  • Một mệnh đề có.

Chức năng 

SQL cung cấp các hàm tổng hợp sau dựa trên bảng Student sau
Cú pháp
  1. SELECT * FROM Student;
Ví dụ 

sinh vien.jpg

APPROX_COUNT_DISTINCT()

Câu lệnh này trả về số gần đúng của các giá trị khác null duy nhất trong một nhóm.
Biểu thức approx_count_distinct đánh giá một biểu thức cho mỗi hàng trong một nhóm và trả về số gần đúng của các giá trị khác null duy nhất trong một nhóm.
Chức năng này được thiết kế để cung cấp các tập hợp trên các tập dữ liệu lớn trong đó khả năng phản hồi quan trọng hơn độ chính xác tuyệt đối.
Approx_count_distinct được thiết kế để sử dụng trong các tình huống dữ liệu lớn và được tối ưu hóa cho các điều kiện sau
  • Truy cập các tập dữ liệu có hàng triệu hàng hoặc cao hơn và
  • Tổng hợp một cột hoặc nhiều cột có nhiều giá trị riêng biệt
Việc triển khai chức năng này đảm bảo tỷ lệ lỗi lên tới 2% trong phạm vi xác suất 97%.Approx_count_distinct yêu cầu ít bộ nhớ hơn so với thao tác riêng biệt đếm toàn bộ, với dung lượng bộ nhớ nhỏ hơn
Approx_count_distinct ít có khả năng tràn bộ nhớ vào đĩa hơn so với thao tác đếm chính xác riêng biệt.
Để tìm hiểu thêm về thuật toán được sử dụng để đạt được điều này, hãy xem hyperloglog.

Cú pháp

  1. SELECT Count (StudentId) AS Approx_Distinct_OrderKey
  2. FROM Student;
Ví dụ 

Approx_Count.jpg

AVG () 

Câu lệnh AVG> tính giá trị trung bình của các giá trị khác null trong một tập hợp.
AVG là kiểu dữ liệu của biểu thức là kiểu dữ liệu bí danh, kiểu trả về cũng thuộc kiểu dữ liệu bí danh.
Tuy nhiên, nếu loại dữ liệu cơ sở của loại dữ liệu bí danh được thăng cấp, ví dụ: từ tinyint thành int, thì giá trị trả về sẽ lấy loại dữ liệu được thăng cấp chứ không phải loại dữ liệu bí danh

AVG() tính giá trị trung bình của một tập hợp các giá trị bằng cách chia tổng của các giá trị đó cho số lượng các giá trị khác null

Nếu tổng vượt quá giá trị tối đa cho loại dữ liệu của giá trị trả về, AVG() sẽ trả về lỗi. AVG là một hàm xác định khi được sử dụng mà không có mệnh đề over và orderby. Nó không xác định khi được chỉ định với các mệnh đề over và order by. để biết thêm thông tin.
Cú pháp
  1. SELECT AVG(StudentAge) FROM Student;

Ví dụ

Sinh viênAvg.jpg

CHECKSUM_AGG()

Câu lệnh này trả về tổng kiểm tra của các giá trị trong một nhóm. CHECKSUM_AGG bỏ qua giá trị null.
Mệnh đề over có thể theo sau CHECKSUM_AGG
CHECKSUM_AGG có thể phát hiện các thay đổi trong bảng
Kết quả CHECKSUM_AGG không phụ thuộc vào thứ tự của các hàng trong bảng. Ngoài ra, hàm CHECKSUM_AGG cho phép sử dụng từ khóa Distinct và mệnh đề Group By
Nếu một giá trị danh sách biểu thức thay đổi, danh sách giá trị tổng kiểm tra danh sách cũng có thể sẽ thay đổi. Tuy nhiên, có một khả năng nhỏ là tổng kiểm tra được tính toán sẽ không thay đổi
Cú pháp 
  1. SELECT CHECKSUM_AGG(CAST(StudentID AS int))
  2. FROM Student;
  3. GO

Ví dụ  

KSum.jpg

COUNT()  

Nó được sử dụng để đếm số hàng được trả về trong một câu lệnh chọn.

Hàm Count trả về số mục được tìm thấy trong một nhóm. số đếm hoạt động giống như hàm COUNT_BIG

Các hàm này chỉ khác nhau về kiểu dữ liệu của các giá trị trả về của chúng.
Đếm luôn trả về một giá trị kiểu dữ liệu int. COUNT_BIG luôn trả về một giá trị kiểu dữ liệu bigint.
Cú pháp
  1. SELECT COUNT (StudentName) from Student
Ví dụ  

CountAggregate.jpg

COUNT_BIG () 

Câu lệnh này trả về số mục được tìm thấy trong một nhóm. COUNT_BIG hoạt động giống như hàm đếm. Các hàm này chỉ khác nhau về kiểu dữ liệu của các giá trị trả về của chúng.
COUNT_BIG luôn trả về giá trị kiểu dữ liệu bigint. Đếm luôn trả về một giá trị kiểu dữ liệu int.
COUNT_BIG(*) trả về số mục trong một nhóm. Điều này bao gồm các giá trị null và trùng lặp.
COUNT_BIG (tất cả biểu thức) đánh giá  biểu thức cho từng hàng trong một nhóm và trả về số lượng giá trị không phải giá trị rỗng.
COUNT_BIG (biểu thức riêng biệt) đánh giá  biểu thức cho mỗi hàng trong một nhóm và trả về số lượng giá trị duy nhất, không phải là giá trị rỗng.
Cú pháp 
  1. SELECT COUNT(*)
  2. FROM Student
  3. GO

Ví dụ 

Đếm1.jpg

GROUPING ()

Câu lệnh Grouping cho biết liệu một biểu thức cột được chỉ định trong danh sách Group theo danh sách có được tổng hợp hay không Group trả về 1 cho tổng hợp hoặc 0 cho không
Tổng hợp trong tập kết quả. Nhóm chỉ có thể được sử dụng trong các mệnh đề SELECT <select> list, HAVING và ORDER BY khi nhóm theo được chỉ định.
Nhóm được sử dụng để phân biệt các giá trị null được trả về bởi các bộ Rollup, khối hoặc Grouping từ các giá trị null tiêu chuẩn.
Giá trị rỗng được trả về là kết quả của thao tác Rollup, Cube hoặc tập hợp nhóm là một cách sử dụng đặc biệt của giá trị rỗng. Điều này hoạt động như một trình giữ chỗ cột trong tập hợp kết quả và có nghĩa là tất cả.
Cú pháp 
  1. SELECT GROUPING(StudentName) AS ‘Grouping’
  2. FROM Student
  3. GROUP BY StudentName  WITH ROLLUP;
  4. GO

 Ví dụ 

nhóm.jpg

Câu lệnh GROUPING_ID ()

Chức năng này tính toán mức độ nhóm. GROUPING_ID chỉ có thể được sử dụng trong các mệnh đề SELECT <select> list, HAVING hoặc ORDER BY khi GROUP BY được chỉ định.
Cú pháp 
  1. SELECT GROUPING_ID(StudentId, StudentName)
  2. FROM Student
  3. GROUP BY CUBE(StudentId, StudentName)
Ví dụ
GroupById.jpg

 

(Source: https://www.c-sharpcorner.com/)

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *