Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Hàm tổng hợp MIN và MAX trong SQL Server

Chức năng của SQL Server

Trong hệ thống cơ sở dữ liệu nói chung và trong SQL Server nói riêng, các hàm là các đoạn mã nhận không hoặc một đầu vào và trả về một đầu ra hoặc một mảng.

Các hàm có giá trị theo bảng thường do người dùng xác định có thể trả về một mảng, nhưng các hàm SQL Server được tích hợp sẵn thường là các hàm có giá trị vô hướng. Lớp hàm thứ ba trong SQL Server là Hàm tổng hợp có giá trị. Các hàm MIN và MAX SQL Server là các hàm có giá trị tổng hợp.

Window Functions là một lớp tương đối mới. Chúng thực hiện các phép tính như các hàm tổng hợp nhưng thực hiện trên một tập hợp các hàng liên quan đến hàng hiện tại. Trong khi một hàm tổng hợp có khả năng mang lại một kết quả duy nhất bằng cách làm việc trên một cột, thì một Hàm Window có nhiều khả năng mang lại một kết quả hơn cho mỗi hàng.

Việc phân loại Hàm máy chủ SQL cũng có thể dựa trên kiểu dữ liệu - Hàm chuỗi, Hàm số và Hàm ngày. Chúng ta có thể suy ra rằng các Hàm chuỗi hoạt động trên các giá trị chuỗi, ví dụ:LENGTH ().

MIN &MAX

Các hàm MIN và MAX là các hàm tổng hợp rất đơn giản. Tuy nhiên, họ có thể trả lời nhiều câu hỏi khác nhau tùy thuộc vào tập dữ liệu mà chúng tôi đang xử lý.

Ví dụ:khi chúng tôi phát hành câu lệnh SELECT, chúng tôi đang hỏi SQL Server một câu hỏi . Do đó, chúng tôi nói rằng chúng tôi đang thực hiện một truy vấn . Để hỏi SQL Server về các giá trị tối thiểu và tối đa trong một cột, chúng tôi sử dụng cú pháp sau:

SELECT MIN(column_name) FROM table_name;
SELECT MAX(column_name) FROM table_name;

Khi chúng ta sử dụng cú pháp này, SQL Server trả về một giá trị duy nhất. Do đó, chúng ta có thể xem xét các hàm MIN () và MAX () Các hàm vô hướng có giá trị.

Liệt kê 1 hiển thị câu lệnh đơn giản để lấy giá trị tối thiểu và tối đa về trọng lượng hàng hóa từ Sales.Orders bảng của Itzik Bengan’s TSQLV4 cơ sở dữ liệu:

-- Listing 1: Basic MIN() and MAX() Function Queries
USE TSQLV4
GO
SELECT * FROM [Sales].[Orders];

-- Without Column Aliases
SELECT MIN(freight) FROM [Sales].[Orders];
SELECT MAX(freight) FROM [Sales].[Orders];
-- Without Column Aliases
SELECT MIN(freight) min_freight FROM [Sales].[Orders];
SELECT MAX(freight) max_freight FROM [Sales].[Orders];

NHÓM THEO

“Trọng lượng hàng hóa tối thiểu và tối đa cho mỗi quốc gia là bao nhiêu?” Để trả lời câu hỏi này, chúng tôi cần GROUP BY mệnh đề. Ví dụ trong Liệt kê 2 bên dưới.

Trước tiên, truy vấn nhóm dữ liệu theo quốc gia đóng tàu, và sau đó nó trả về trọng lượng hàng hóa tối thiểu và tối đa tương ứng cho mỗi quốc gia. Chúng tôi có thể xác nhận điều này bằng cách đưa ra truy vấn cuối cùng trong danh sách (xác thực).

-- Listing 2: MIN and MAX Freight By Country
-- Minimum by Country
SELECT shipcountry, MIN(freight) min_freight FROM [Sales].[Orders]
GROUP BY shipcountry;

-- Maximum by Country
SELECT shipcountry, MAX(freight) max_freight FROM [Sales].[Orders]
GROUP BY shipcountry;

-- Validation
SELECT * FROM [Sales].[Orders] WHERE shipcountry='Finland'
ORDER BY freight;

-- Listing 2: MIN and MAX Freight by Country
-- Minimum by Customer
SELECT custid, MIN(freight) min_freight FROM [Sales].[Orders]
GROUP BY custid;

-- Maximum by Customer
SELECT custid, MAX(freight) max_freight FROM [Sales].[Orders]
GROUP BY custid;


-- Validation
SELECT * FROM [Sales].[Orders] WHERE custid='23'
ORDER BY freight;

Hình 3 cho thấy kết quả. Chúng tôi có thể làm điều gì đó tương tự với một cột khác - custid cột. Trong trường hợp này, chúng tôi đang trả lời câu hỏi, “Mức độ sợ hãi tối thiểu và tối đa đối với mỗi khách hàng là bao nhiêu?”

Câu hỏi khác

Chúng tôi có thể thăm dò thêm dữ liệu để tìm ra những quốc gia có trọng lượng hàng hóa nhỏ hơn 1 hoặc hơn 800. Chúng tôi thực hiện việc này bằng cách sử dụng tính năng HAVING mệnh đề lọc các tập hợp kết quả được phân đoạn thành các nhóm theo GROUP BY mệnh đề.

-- Listing 3: Introducing the HAVING Clause
SELECT shipcountry, MIN(freight) min_freight FROM [Sales].[Orders]
GROUP BY shipcountry
HAVING MIN(freight)<1;

SELECT shipcountry, MAX(freight) max_freight FROM [Sales].[Orders]
GROUP BY shipcountry
HAVING MAX(freight)>800;

Làm việc với Ngày

Khi áp dụng hàm MIN () và MAX () cho ngày tháng, chúng tôi hy vọng sẽ thấy sớm nhất mới nhất ngày tháng tương ứng. Hãy xem các ví dụ - ngày tháng được lưu trữ dưới dạng số nguyên trong nội bộ SQL Server.

-- Listing 4: Working with Dates
SELECT MIN(orderdate) earliest_date FROM [Sales].[Orders];
SELECT MAX(orderdate) latest_date FROM [Sales].[Orders];

Chúng ta có thể tìm hiểu sâu hơn bằng cách hỏi khách hàng nào đã đặt hàng đầu tiên và khách hàng nào đã đặt hàng gần đây nhất. Đối với điều đó, chúng tôi đang sử dụng mã trong Liệt kê 5. Hình 6 cho thấy rằng custid 85 khách hàng thực hiện đơn đặt hàng sớm nhất, trong khi custid 9 khách hàng đã đặt hàng mới nhất.

-- Listing 5: Customer Order Dates
SELECT custid, MIN(orderdate) earliest_date FROM [Sales].[Orders]
GROUP BY custid
ORDER BY earliest_date;

SELECT custid, MAX(orderdate) latest_date FROM [Sales].[Orders]
GROUP BY custid
ORDER BY latest_date desc;

Kết luận

Trong bài viết này, chúng tôi đã trình bày ngắn gọn cách sử dụng hàm tổng hợp MIN () và MAX () trong SQL Server. Vai trò của các hàm này là trả về giá trị tối thiểu và tối đa cho một phạm vi nhất định được lưu trữ trong cột bảng.

Chúng tôi có thể trả lời nhiều câu hỏi hơn với các hàm này bằng cách kết hợp chúng với các lệnh T-SQL khác như mệnh đề GROUP BY, ORDER BY và HAVING.

Rất nhiều công cụ đơn giản hóa và tăng tốc hiệu suất tác vụ như vậy và bạn có thể chọn bất kỳ giải pháp nào đáp ứng yêu cầu của mình. Trong số đó, SQL Complete từ Devart thực hiện tất cả các thao tác cần thiết và cung cấp tính năng Tổng hợp lưới SSMS tại chỗ tính toán MIN, MAX và AVG của các giá trị đã chọn trong lưới.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thêm Ràng buộc khóa chính vào Cột nhận dạng vào tất cả các bảng trong Cơ sở dữ liệu SQL Server - Hướng dẫn sử dụng SQL Server / TSQL Phần 63

  2. Tổng quan về câu lệnh PRINT trong SQL Server

  3. SQL chọn tất cả nếu tham số là null nếu không trả về mục cụ thể

  4. 3 cách chuyển đổi HEX sang INT trong SQL Server (T-SQL)

  5. Hiệu suất máy chủ SQL - Kiểm tra trong đám mây