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

Hàm COUNT () trong MariaDB

Trong MariaDB, COUNT() hàm tổng hợp trả về số lượng các giá trị không phải NULL của một biểu thức trong các hàng được truy xuất bởi một SELECT tuyên bố.

Dữ liệu mẫu

Giả sử chúng ta có bảng sau:

SELECT * 
FROM Pets;

Kết quả:

+-------+-----------+---------+---------+------------+
| PetId | PetTypeId | OwnerId | PetName | DOB        |
+-------+-----------+---------+---------+------------+
|     1 |         2 |       3 | Fluffy  | 2020-11-20 |
|     2 |         3 |       3 | Fetch   | 2019-08-16 |
|     3 |         2 |       2 | Scratch | 2018-10-01 |
|     4 |         3 |       3 | Wag     | 2020-03-15 |
|     5 |         1 |       1 | Tweet   | 2020-11-28 |
|     6 |         3 |       4 | Fluffy  | 2020-09-17 |
|     7 |         3 |       2 | Bark    | NULL       |
|     8 |         2 |       4 | Meow    | NULL       |
+-------+-----------+---------+---------+------------+

Các ví dụ sau sẽ sử dụng COUNT() khi truy vấn bảng này.

Ví dụ

Đây là cách đếm các hàng trong bảng trên:

SELECT COUNT(*)
FROM Pets;

Kết quả:

8

Điều này cho chúng ta biết rằng có 8 hàng trong bảng. Chúng tôi biết điều đó vì chúng tôi đã sử dụng ký tự đại diện dấu hoa thị (* ) để chỉ định tất cả các hàng và tất cả các cột.

Đếm một cột cụ thể

Bạn cũng có thể chỉ định một cột để đếm. COUNT() hàm chỉ đếm không phải NULL kết quả, vì vậy nếu bạn chỉ định một cột chứa NULL giá trị, những giá trị đó sẽ không được tính.

Đây là một ví dụ để chứng minh ý tôi muốn nói.

SELECT COUNT(DOB)
FROM Pets;

Kết quả:

6

Trong trường hợp này, Pets bảng chứa hai NULL các giá trị trong DOB cột (hai vật nuôi chưa cung cấp ngày sinh của chúng) và COUNT(DOB) trả về 6, thay vì 8 khi chúng tôi sử dụng COUNT(*) .

Lý do COUNT(*) trong ví dụ trước đã trả về tất cả các hàng, là do hai hàng đó đã làm có dữ liệu trong các cột khác.

Kết quả đã lọc

COUNT() hàm đếm các hàng được trả về bởi truy vấn. Vì vậy, nếu bạn lọc kết quả, kết quả là COUNT() sẽ phản ánh điều đó.

SELECT COUNT(*)
FROM Pets
WHERE PetName = 'Fluffy';

Kết quả:

2

Trong trường hợp này, có hai vật nuôi có tên là Fluffy. Do đó, hai hàng sẽ được trả về bởi truy vấn và kết quả của COUNT()2 .

Đếm số cột riêng biệt

Chúng tôi có tùy chọn thêm DISTINCT từ khóa để chỉ định rằng chỉ các giá trị riêng biệt được trả về (để loại trừ các giá trị trùng lặp):

SELECT 
    COUNT(PetName) AS "All",
    COUNT(DISTINCT PetName) AS "Distinct"
FROM Pets;

Kết quả:

+-----+----------+
| All | Distinct |
+-----+----------+
|   8 |        7 |
+-----+----------+

Trong trường hợp này, mặc dù có tám PetName , chỉ có bảy trong số chúng là khác biệt (hai là trùng lặp - chúng tôi có hai vật nuôi được gọi là Fluffy).

HAVING Mệnh đề

Bạn có thể bao gồm COUNT() trong nhiều phần của một truy vấn. Nó không chỉ giới hạn ở SELECT danh sách.

Dưới đây là một ví dụ sử dụng COUNT() trong cả HAVING và mệnh đề SELECT danh sách:

SELECT 
    PetTypeId, 
    COUNT(PetTypeId) AS Count
FROM Pets
GROUP BY PetTypeId
HAVING COUNT(PetTypeId) > 2
ORDER BY Count DESC;

Kết quả:

+-------------+---------+
| PetTypeId   | Count   |
|-------------+---------|
| 3           | 4       |
| 2           | 3       |
+-------------+---------+

Xem SQL COUNT() dành cho Người mới bắt đầu để có giải thích chi tiết hơn về ví dụ này, cũng như ví dụ về cách sử dụng COUNT() trong một chức năng cửa sổ.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB CURRENT_ROLE () Giải thích

  2. Bốn điều bạn chưa biết về Amazon Aurora

  3. Cách phát hiện xem giá trị có chứa ít nhất một chữ số trong MariaDB hay không

  4. Tối đa hóa hiệu quả truy vấn cơ sở dữ liệu cho MySQL - Phần thứ hai

  5. MariaDB BENCHMARK () Giải thích