Làm cách nào để đếm NULL trong MySQL?
Không phải ai cũng nhận ra điều này, nhưng hàm COUNT sẽ chỉ bao gồm các bản ghi trong số đếm mà giá trị của biểu thức trong COUNT(biểu thức) là NOT NULL. Khi biểu thức chứa giá trị NULL, nó không được bao gồm trong phép tính COUNT Show
Hãy xem một ví dụ về hàm COUNT minh họa cách các giá trị NULL được đánh giá bởi hàm COUNT Ví dụ: nếu bạn có bảng sau đây được gọi là nhà cung cấp nhà cung cấp_id nhà cung cấp_tên trạng thái 1 IBM CA2 Microsoft 3 NVIDIA Và nếu bạn chạy câu lệnh SELECT sau sử dụng hàm COUNT SELECT COUNT(supplier_id) FROM suppliers; Result: 3 Ví dụ COUNT này sẽ trả về 3 vì tất cả các giá trị supply_id trong tập hợp kết quả của truy vấn đều KHÔNG NULL Tuy nhiên, nếu bạn chạy câu lệnh SELECT tiếp theo sử dụng hàm COUNT SELECT COUNT(state) FROM suppliers; Result: 1 Ví dụ COUNT này sẽ chỉ trả về 1, vì chỉ có một giá trị trạng thái trong tập kết quả của truy vấn là NOT NULL. Đó sẽ là hàng đầu tiên có trạng thái = 'CA'. Đây là hàng duy nhất được bao gồm trong phép tính hàm COUNT Áp dụng đối vớiHàm COUNT có thể được sử dụng trong các phiên bản MySQL sau
Ví dụ - Với biểu thức đơnHãy xem một số ví dụ về hàm COUNT trong MySQL và khám phá cách sử dụng hàm COUNT trong MySQL Ví dụ, bạn có thể muốn biết có bao nhiêu nhân viên có mức lương trên $75,000/năm SELECT COUNT(*) AS "Number of employees" FROM employees WHERE salary > 75000; Trong ví dụ về hàm COUNT này, chúng tôi đã đặt bí danh cho biểu thức COUNT(*) là "Số lượng nhân viên". Do đó, "Số lượng nhân viên" sẽ hiển thị dưới dạng tên trường khi tập kết quả được trả về Ví dụ - Sử dụng DISTINCTBạn có thể sử dụng mệnh đề DISTINCT trong hàm COUNT. Ví dụ: câu lệnh SQL bên dưới trả về số phòng ban duy nhất có ít nhất một nhân viên kiếm được hơn 55.000 đô la/năm SELECT COUNT(DISTINCT department) AS "Unique departments" FROM employees WHERE salary > 55000; Một lần nữa, trường COUNT(Bộ phận DISTINCT) có bí danh là "Các bộ phận duy nhất". Đây là tên trường sẽ hiển thị trong tập hợp kết quả Ví dụ - Sử dụng GROUP BYTrong một số trường hợp, bạn sẽ được yêu cầu sử dụng mệnh đề GROUP BY với hàm COUNT Ví dụ: bạn cũng có thể sử dụng hàm COUNT để trả về tên của bộ phận và số lượng nhân viên (trong bộ phận được liên kết) ở trạng thái 'CA' SELECT department, COUNT(*) AS "Number of employees" FROM employees WHERE state = 'CA' GROUP BY department; Bởi vì bạn đã liệt kê một cột trong câu lệnh SELECT không được đóng gói trong hàm COUNT, nên bạn phải sử dụng mệnh đề GROUP BY. Do đó, trường bộ phận phải được liệt kê trong phần NHÓM THEO Tóm lược. trong hướng dẫn này, bạn sẽ học cách sử dụng hàm MySQL 1 để trả về số hàng trong một bảng Giới thiệu về hàm MySQL INSERT INTO count_demos(val) VALUES(1),(1),(2),(2),(NULL),(3),(4),(NULL),(5);Code language: SQL (Structured Query Language) (sql)1Hàm 1 là một hàm tổng hợp trả về số hàng trong một bảng. Hàm 1 cho phép bạn đếm tất cả các hàng hoặc chỉ những hàng phù hợp với một điều kiện cụ thể Hàm 1 có ba dạng. 6, 7 và 8 chức năng INSERT INTO count_demos(val) VALUES(1),(1),(2),(2),(NULL),(3),(4),(NULL),(5);Code language: SQL (Structured Query Language) (sql)6Hàm 6 trả về số hàng trong tập kết quả được trả về bởi câu lệnh SELECT COUNT(state) FROM suppliers; Result: 151. 6 trả về số hàng bao gồm các hàng trùng lặp, không phải NULL và SELECT COUNT(state) FROM suppliers; Result: 153 INSERT INTO count_demos(val) VALUES(1),(1),(2),(2),(NULL),(3),(4),(NULL),(5);Code language: SQL (Structured Query Language) (sql)77 trả về số hàng không chứa giá trị SELECT COUNT(state) FROM suppliers; Result: 153 là kết quả của biểu thức INSERT INTO count_demos(val) VALUES(1),(1),(2),(2),(NULL),(3),(4),(NULL),(5);Code language: SQL (Structured Query Language) (sql)88 trả về số hàng riêng biệt không chứa giá trị SELECT COUNT(state) FROM suppliers; Result: 153 là kết quả của biểu thức Kiểu trả về của hàm 1 là SELECT COUNT(*) AS "Number of employees" FROM employees WHERE salary > 75000;51. Hàm 1 trả về 0 nếu không tìm thấy hàng phù hợp Minh họa hàm MySQL INSERT INTO count_demos(val) VALUES(1),(1),(2),(2),(NULL),(3),(4),(NULL),(5);Code language: SQL (Structured Query Language) (sql)1Thiết lập một bảng mẫuĐầu tiên, tạo một bảng tên là SELECT COUNT(*) AS "Number of employees" FROM employees WHERE salary > 75000;54 SELECT COUNT(*) AS "Number of employees" FROM employees WHERE salary > 75000;9 Thứ hai, chèn một số hàng vào bảng SELECT COUNT(*) AS "Number of employees" FROM employees WHERE salary > 75000;54
Thứ ba, truy vấn dữ liệu từ bảng SELECT COUNT(*) AS "Number of employees" FROM employees WHERE salary > 75000;54 SELECT COUNT(state) FROM suppliers; Result: 15 Ví dụ về MySQL INSERT INTO count_demos(val) VALUES(1),(1),(2),(2),(NULL),(3),(4),(NULL),(5); (adsbygoogle = window.adsbygoogle || []).push({}); Code language: SQL (Structured Query Language) (sql)6Câu lệnh sau sử dụng hàm 6 để trả về tất cả các hàng từ bảng SELECT COUNT(*) AS "Number of employees" FROM employees WHERE salary > 75000;54 SELECT COUNT(*) AS "Number of employees" FROM employees WHERE salary > 75000;5 Ví dụ này sử dụng hàm 6 với mệnh đề SELECT COUNT(DISTINCT department) AS "Unique departments" FROM employees WHERE salary > 55000;91 để chỉ định điều kiện chỉ đếm những hàng có giá trị trong cột SELECT COUNT(DISTINCT department) AS "Unique departments" FROM employees WHERE salary > 55000;92 là 2. SELECT COUNT(DISTINCT department) AS "Unique departments" FROM employees WHERE salary > 55000;9 Ví dụ MySQL INSERT INTO count_demos(val) VALUES(1),(1),(2),(2),(NULL),(3),(4),(NULL),(5);Code language: SQL (Structured Query Language) (sql)7Nếu bạn chỉ định cột SELECT COUNT(DISTINCT department) AS "Unique departments" FROM employees WHERE salary > 55000;92 trong hàm 1, thì hàm 1 sẽ chỉ tính các hàng có giá trị không phải NULL trong cột SELECT COUNT(DISTINCT department) AS "Unique departments" FROM employees WHERE salary > 55000;92 SELECT department, COUNT(*) AS "Number of employees" FROM employees WHERE state = 'CA' GROUP BY department;7 Lưu ý rằng hai giá trị SELECT COUNT(state) FROM suppliers; Result: 153 không được bao gồm trong kết quả. Ví dụ về MySQL INSERT INTO count_demos(val) VALUES(1),(1),(2),(2),(NULL),(3),(4),(NULL),(5);Code language: SQL (Structured Query Language) (sql)8Ví dụ này sử dụng 8 để đếm các giá trị khác NULL và khác biệt trong cột SELECT COUNT(DISTINCT department) AS "Unique departments" FROM employees WHERE salary > 55000;92 2 Ví dụ thực tế về hàm MySQL INSERT INTO count_demos(val) VALUES(1),(1),(2),(2),(NULL),(3),(4),(NULL),(5);Code language: SQL (Structured Query Language) (sql)1Chúng tôi sẽ sử dụng bảng SELECT department, COUNT(*) AS "Number of employees" FROM employees WHERE state = 'CA' GROUP BY department;73 từ cơ sở dữ liệu mẫu cho các ví dụ tiếp theo A) Sử dụng hàm MySQL INSERT INTO count_demos(val) VALUES(1),(1),(2),(2),(NULL),(3),(4),(NULL),(5);Code language: SQL (Structured Query Language) (sql)6 với ví dụ về SELECT department, COUNT(*) AS "Number of employees" FROM employees WHERE state = 'CA' GROUP BY department;75Hàm 6 thường được sử dụng với mệnh đề SELECT department, COUNT(*) AS "Number of employees" FROM employees WHERE state = 'CA' GROUP BY department;77 để trả về số phần tử trong mỗi nhóm Ví dụ: câu lệnh này sử dụng hàm 1 với mệnh đề SELECT department, COUNT(*) AS "Number of employees" FROM employees WHERE state = 'CA' GROUP BY department;75 để trả về số lượng sản phẩm trong mỗi dòng sản phẩm 1 Tương tự, ví dụ này sử dụng hàm 6 để tìm số lượng sản phẩm được cung cấp bởi mỗi nhà cung cấp. 3 B) Sử dụng MySQL INSERT INTO count_demos(val) VALUES(1),(1),(2),(2),(NULL),(3),(4),(NULL),(5); (adsbygoogle = window.adsbygoogle || []).push({}); Code language: SQL (Structured Query Language) (sql)6 với ví dụ về mệnh đề INSERT INTO count_demos(val) VALUES(1),(1),(2),(2),(NULL),(3),(4),(NULL),(5);Code language: SQL (Structured Query Language) (sql)22Để tìm nhà cung cấp cung cấp ít nhất 9 sản phẩm, bạn sử dụng hàm 6 trong mệnh đề 24 như trong truy vấn sau 8 C) Ví dụ về MySQL INSERT INTO count_demos(val) VALUES(1),(1),(2),(2),(NULL),(3),(4),(NULL),(5);Code language: SQL (Structured Query Language) (sql)25Bạn có thể sử dụng một biểu thức luồng điều khiển và các hàm e. g. , 26, 27 và 28 trong hàm 1 để đếm các hàng có giá trị khớp với một điều kiện Xem bảng 10 sau đây từ cơ sở dữ liệu mẫu Truy vấn sau đây sử dụng hàm 1 với hàm 12 để tìm số lượng đơn đặt hàng bị hủy, bị tạm dừng và bị tranh chấp từ bảng 10 0 Hàm 14 trả về 1 nếu trạng thái của đơn đặt hàng bị hủy, tạm dừng hoặc có tranh chấp, nếu không, nó trả về SELECT COUNT(state) FROM suppliers; Result: 153 Hàm 16 chỉ đếm 1, không tính giá trị NULL nên truy vấn trả về số lượng đơn hàng dựa trên trạng thái tương ứng Trong hướng dẫn này, bạn đã học được nhiều kỹ thuật khác nhau để đếm số hàng trong một bảng bằng cách sử dụng hàm MySQL 16 Làm cách nào để tìm số giá trị NULL trong MySQL?Để tìm giá trị NULL, bạn phải sử dụng phép kiểm IS NULL. Các câu lệnh sau đây cho biết cách tìm số điện thoại NULL và số điện thoại trống. mysql> CHỌN * TỪ my_table WHERE điện thoại LÀ NULL ; . 3.
Số đếm (*) trong SQL có tính NULL không?Ký hiệu COUNT(*) bao gồm các giá trị NULL trong tổng số . Ký hiệu COUNT(tên_cột) chỉ xem xét các hàng trong đó cột chứa giá trị không phải NULL. Bạn cũng có thể kết hợp COUNT với toán tử DISTINCT để loại bỏ các giá trị trùng lặp trước khi đếm và để đếm các tổ hợp giá trị trên nhiều cột.
NULL có được tính là 0 trong SQL không?Trong SQL Server, giá trị NULL cho biết giá trị không khả dụng hoặc chưa được gán. Giá trị NULL không bằng 0 (0) , cũng không bằng khoảng trắng (' '). Vì giá trị NULL không thể bằng hoặc không bằng với bất kỳ giá trị nào nên bạn không thể thực hiện bất kỳ phép so sánh nào trên giá trị này bằng cách sử dụng các toán tử như '=' hoặc '<>'. |