Tổng quan về hàm phân biệt số đếm trong SQL – đếm với phân biệt trong sql

Bài viết này khám phá hàm Phân biệt Số đếm trong SQL và cách sử dụng nó cùng với phiên bản nâng cao trong SQL Server 2019.

Bạn đang xem: đếm với phân biệt trong sql

Bài viết này khám phá toán tử SQL Count Distinction để loại bỏ các hàng trùng lặp trong tập kết quả.

Một nhà phát triển cần lấy dữ liệu từ một bảng SQL với nhiều điều kiện. Đôi khi, chúng ta muốn lấy tất cả các hàng trong một bảng nhưng lại loại bỏ các giá trị NULL có sẵn. Giả sử chúng ta muốn có được các bản ghi khách hàng riêng biệt đã đặt hàng vào năm ngoái.

Hãy tiếp tục và có một cái nhìn tổng quan nhanh về Hàm đếm trong SQL.

Hàm đếm trong SQL

Chúng tôi sử dụng hàm tổng hợp SQL Count để lấy số hàng trong đầu ra. Giả sử chúng ta có một bảng sản phẩm chứa các bản ghi cho tất cả các sản phẩm được bán bởi một công ty. Chúng tôi muốn biết số lượng sản phẩm đã bán trong quý vừa qua. Chúng ta có thể sử dụng Hàm đếm trong SQL để trả về số hàng trong điều kiện đã chỉ định.

Cú pháp của hàm COUNT trong SQL :
COUNT ([ALL | DISTINCT] biểu thức);

Theo mặc định, Hàm đếm máy chủ SQL sử dụng từ khóa Tất cả . Nó có nghĩa là SQL Server đếm tất cả các bản ghi trong một bảng. Nó cũng bao gồm các hàng có giá trị trùng lặp.

Hãy tạo một bảng mẫu và chèn một vài bản ghi vào đó.

1

2

3

4

5

6

7

TẠO

BẢNG

##

Bảng kiểm tra

(

Id

int

danh tính

(

1

,

1

)

,

Col1

char

(

< p class = "crayon-cn"> 1

)

KHÔNG ĐỦ

)

;

CHÈN

VÀO

##

TestTable

GIÁ TRỊ

(

‘A’

)

;

< p class = "crayon-h">

CHÈN

VÀO

##

TestTable

GIÁ TRỊ

(

‘A’

)

;

CHÈN

VÀO

##

TestTable

GIÁ TRỊ

(

‘B’ < / p>

)

;

CHÈN

< / p>

VÀO

##

TestTable

< p class = "crayon-h">

GIÁ TRỊ

(

‘B’

)

;

CHÈN

VÀO

##

TestTable

GIÁ TRỊ

< p class = "crayon-sy"> (

NULL

)

;

CHÈN

VÀO

##

TestTable

GIÁ TRỊ

(

KHÔNG ĐỦ

)

;

Trong bảng này, chúng ta có các giá trị trùng lặp và giá trị NULL.

Trong ảnh chụp màn hình sau, chúng ta có thể lưu ý rằng:

  • Đếm (*) bao gồm các giá trị trùng lặp cũng như các giá trị NULL
  • Đếm (Col1) bao gồm các giá trị trùng lặp nhưng không bao gồm các giá trị NULL

Giả sử chúng ta muốn biết các giá trị riêng biệt có sẵn trong bảng. Chúng ta có thể sử dụng SQL COUNT DISTINCT để làm như vậy.

1

2

Chọn

đếm

(

DISTINCT

COL1

)

từ

## < p class = "crayon-i"> TestTable

Trong đầu ra sau đây, chúng ta chỉ nhận được 2 hàng. SQL COUNT Distinction không loại bỏ các giá trị trùng lặp và NULL khỏi tập kết quả.

Hãy xem một ví dụ khác. Trong ví dụ này, chúng tôi có một bảng vị trí bao gồm hai cột Thành phố và Tiểu bang.

Xem Thêm  Làm cách nào để thêm biểu tượng cảm xúc vào tài liệu HTML? - sử dụng biểu tượng cảm xúc trong html

1

2

3

4

5

6

7

8

9

TẠO

BẢNG

Vị trí

(

Thành phố < / p>

VARCHAR

(

30

)

,

Trạng thái

VARCHAR

(

20

)

)

;

Chèn

thành

vị trí

giá trị

(

‘Gurgaon’

,

‘Haryana’

)

Chèn

vào

vị trí

giá trị

(

‘Gurgaon’

,

‘Rajasthan’

)

Chèn

thành

vị trí

giá trị

(

‘Jaipur’

,

‘Rajasthan’ < / p>

)

Chèn

vào

< / p>

vị trí

giá trị

(

‘Jaipur’

,

‘Haryana’

)

Bây giờ, hãy thực hiện truy vấn sau để tìm ra số lượng thành phố riêng biệt trong bảng.

1

2

CHỌN

COUNT

(

DISTINCT

(

Thành phố

)

)

TỪ

< p class = "crayon-h">

Vị trí

;

Nó trả về tổng số thành phố duy nhất 2 (Gurgaon và Jaipur) từ tập kết quả của chúng tôi.

Nếu chúng ta nhìn vào dữ liệu, chúng ta cũng có tên thành phố tương tự hiện diện ở một tiểu bang khác. Sự kết hợp giữa thành phố và tiểu bang là duy nhất và chúng tôi không muốn sự kết hợp duy nhất đó bị loại khỏi đầu ra.

Chúng ta cũng có thể sử dụng hàm DISTINCT của SQL trên một tổ hợp các cột. Nó kiểm tra sự kết hợp của các giá trị và loại bỏ nếu sự kết hợp đó không phải là duy nhất.

1

2

CHỌN

DISTINCT

Thành phố

,

Trạng thái

TỪ

Vị trí

;

Nó không loại bỏ các tên thành phố trùng lặp khỏi đầu ra vì sự kết hợp duy nhất của các giá trị.

Hãy chèn thêm một hàng trong bảng vị trí.

1

Chèn

vào

vị trí

giá trị

(

‘Gurgaon’

,

‘Haryana’

)

Chúng tôi có 5 bản ghi trong bảng vị trí. Trong dữ liệu, bạn có thể thấy chúng tôi có một sự kết hợp giữa thành phố và tiểu bang không phải là duy nhất.

Chạy lại hàm SELECT DISTINCT và nó sẽ chỉ trả về 4 hàng lần này.

Chúng tôi không thể sử dụng trực tiếp hàm COUNT DISTINCT trong SQL với nhiều cột. Bạn nhận được thông báo lỗi sau.

Chúng ta có thể sử dụng một bảng tạm thời để lấy các bản ghi từ hàm DISTINCT trong SQL và sau đó sử dụng count (*) để kiểm tra số lượng hàng.

1

2

3

4

CHỌN

DISTINCT

Thành phố

,

Trạng thái

vào

#

Nhiệt độ

TỪ

Vị trí

;

Chọn

đếm

(

*

< p class = "crayon-sy">)

từ

#

Nhiệt độ

Chúng tôi nhận được số hàng 4 trong đầu ra.

Nếu chúng ta sử dụng kết hợp các cột để nhận các giá trị riêng biệt và bất kỳ cột nào chứa giá trị NULL, thì nó cũng trở thành một tổ hợp duy nhất cho SQL Server.

Để xác minh điều này, hãy chèn thêm bản ghi vào bảng vị trí. Chúng tôi không chỉ định bất kỳ trạng thái nào trong truy vấn này.

1

2

Chèn

vào

vị trí

giá trị

(

‘Gurgaon’

,

) < / p>

Chèn

vào

vị trí

(

thành phố < / p>

)

giá trị

(

‘Gurgaon’

)

Hãy xem dữ liệu bảng vị trí.

Chạy lại truy vấn để nhận các hàng riêng biệt từ bảng vị trí.

1

2

CHỌN

Xem Thêm  Git Push to Remote Branch - Cách đẩy Local Branch đến Origin - làm thế nào để đẩy đến một chi nhánh gitlab

khác biệt

Thành phố

,

Trạng thái

TỪ

Vị trí

;

Trong đầu ra, chúng ta có thể thấy nó không loại bỏ sự kết hợp của Thành phố và Bang với các giá trị trống hoặc NULL.

Tương tự, bạn có thể thấy số hàng 6 với hàm COUNT DISTINCT trong SQL.

Sự khác biệt giữa SELECT COUNT, COUNT (*) và SQL COUNT khác biệt

ĐẾM

Đếm(*)

Đếm (Riêng biệt)

Nó trả về tổng số hàng sau khi thỏa mãn các điều kiện được chỉ định trong mệnh đề where.

Nó trả về tổng số hàng sau khi thỏa mãn các điều kiện được chỉ định trong mệnh đề where.

Nó trả về số hàng riêng biệt sau khi thỏa mãn các điều kiện được chỉ định trong mệnh đề where.

Nó cung cấp số lượng hàng. Nó không loại bỏ các giá trị trùng lặp.

Nó xem xét tất cả các hàng bất kể giá trị NULL, trùng lặp nào.

Nó cung cấp một số hàng riêng biệt sau khi loại bỏ các giá trị NULL và trùng lặp.

Nó loại bỏ các giá trị NULL trong đầu ra.

Nó không loại bỏ các giá trị NULL trong đầu ra.

Nó loại bỏ các giá trị NULL trong đầu ra.

Kế hoạch thực thi của hàm riêng biệt SQL Count

Hãy xem kế hoạch thực thi thực tế của hàm COUNT DISTINCT trong SQL. Bạn cần kích hoạt Kế hoạch thực thi thực tế từ thanh Menu SSMS như hình dưới đây.

Thực thi truy vấn để có được một kế hoạch thực thi Thực tế. Trong kế hoạch thực thi này, bạn có thể thấy các toán tử tiêu thụ tài nguyên hàng đầu:

  • Sắp xếp (Sắp xếp riêng) – Chi phí 78%
  • Quét bảng – Chi phí 22%

Bạn có thể di chuột qua toán tử sắp xếp và nó sẽ mở ra một mẹo công cụ với các chi tiết về toán tử.

Trong cửa sổ thuộc tính, chúng tôi cũng có thêm thông tin chi tiết về toán tử sắp xếp bao gồm cấp phát bộ nhớ, thống kê và số lượng hàng.

Trong một bảng có hàng triệu bản ghi, SQL Count Distinction có thể gây ra các vấn đề về hiệu suất vì toán tử đếm riêng biệt là toán tử tốn kém trong kế hoạch thực thi thực tế.

SQL Server 2019 cải thiện hiệu suất của toán tử SQL COUNT DISTINCT bằng cách sử dụng hàm Approx_count_distinct mới. Chức năng mới này của SQL Server 2019 cung cấp số lượng các hàng riêng biệt gần đúng. Có thể có một chút khác biệt trong đầu ra của hàm SQL Count riêng biệt và Approx_Count_distinct.

Bạn có thể thay thế SQL COUNT DISTINCT bằng từ khóa Approx_Count_distinct để sử dụng chức năng này từ SQL Server 2019.

1

2

CHỌN

APPROX_COUNT_DISTINCT

(

Thành phố

)

TỪ

Vị trí

;

Bạn có thể khám phá thêm về chức năng này trong Hàm SQL Server 2019 mới Approx_Count_Distinct.

Xem Thêm  Cách kết nối PHP với cơ sở dữ liệu MySQL - php pdo mysql kết nối

Kết luận

Trong bài viết này, chúng tôi đã khám phá Hàm COUNT trong SQL với nhiều ví dụ khác nhau. Chúng tôi cũng đề cập đến hàm SQL mới Approx_Count_distinct có sẵn từ SQL Server 2019. Tôi khuyên bạn nên xem xét chúng theo môi trường của bạn. Nếu bạn có bất kỳ ý kiến ​​hoặc câu hỏi nào, đừng ngại để lại trong phần bình luận bên dưới.


Xem thêm những thông tin liên quan đến chủ đề đếm với phân biệt trong sql

What Is SQL Distinct and How Can You Use It?

  • Tác giả: Database Star
  • Ngày đăng: 2020-06-02
  • Đánh giá: 4 ⭐ ( 8424 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: The DISTINCT keyword in SQL allows you to eliminate duplicate records from the results of your SELECT query. This video explains how to use SQL DISTINCT, how to use it with COUNT, and one thing to be aware of.
    The demonstration uses MySQL, but the code and concept work in many other vendors (Oracle, SQL Server, PostgreSQL, MySQL)

Hàm COUNT trong SQL

  • Tác giả: vietjack.com
  • Đánh giá: 4 ⭐ ( 8908 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hàm COUNT trong SQL – Học SQL cơ bản nâng cao. Học SQL trực tuyến theo các bước từ Khái niệm về database, Cú pháp SQL, Truy vấn SELECT, Truy vấn INSERT, Lệnh DELETE, Truy vấn UPDATE, Ràng buộc (Constraint), Truy vấn DROP, Lệnh TRUNCATE, Từ khóa DISTINCT, Mệnh đề ORDER BY, Mệnh đề GROUP BY, Mệnh đề WHERE, Sử dụng Join, Sử dụng View, Sử dụng Sequence, Transaction, Hàm xử lý, Bảng tạm, Toán tử.

Cách sử dụng hàm COUNT trong SQL Server để xử lý, phân tích dữ liệu

  • Tác giả: learnid.com
  • Đánh giá: 3 ⭐ ( 8673 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Function trong SQL Server: Hướng dẫn từ A-Z về function

  • Tác giả: comdy.vn
  • Đánh giá: 5 ⭐ ( 5756 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Tìm hiểu mọi thứ bạn cần biết về function trong SQL Server: bao gồm hàm vô hướng và hàm bảng.

Đếm phân biệt với tổng hợp SQL

  • Tác giả: isolution.pro
  • Đánh giá: 4 ⭐ ( 5954 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Trong SQL, sự khác biệt giữa đếm (cột) và đếm (*) là gì?

  • Tác giả: qastack.vn
  • Đánh giá: 3 ⭐ ( 3683 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] count(*)đếm NULL và count(column)không [sửa] đã thêm mã này để mọi người có thể chạy nó…

Một số câu hỏi phỏng vấn liên quan đến SQL mà bạn nên biết^^

  • Tác giả: viblo.asia
  • Đánh giá: 3 ⭐ ( 6458 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Những bài viết trước mình đã chia sẻ những kiến thức cơ bản về Database, MySQL, một số câu lệnh truy vấn cơ sở dữ liệu thường dùng mà các bạn có thể áp dụng vào công việc…

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình