SQL教學
SQL RDBMS概念
SQL簡介
SQL NOT NULL約束
SQL DEFAULT約束
SQL唯一約束
SQL主鍵
SQL外鍵
SQL CHECK約束
SQL示例數據庫
SQL索引約束
SQL NULL值
數據庫 - 第一範式(1NF)
數據庫 - 第二範式(2NF)
數據庫 - 第三範式(3NF)
SQL RDBMS數據庫
SQL語法
SQL數據類型
SQL操運算符
SQL算術運算符
SQL比較運算符
SQL邏輯運算符
SQL表達式
SQL創建數據庫(CREATE DATABASE)
SQL丟棄或刪除數據庫(DROP DATABASE)
SQL選擇數據庫(SELECT Database, USE語句)
SQL創建表(CREATE Table)
SQL從現有表創建表
SQL刪除表(DROP或DELETE Table)
SQL INSERT INTO插入查詢
SQL SELECT查詢語句
SQL WHERE子句
SQL AND和OR運算符
SQL UPDATE更新查詢
SQL DELETE刪除查詢
SQL LIKE子句
SQL TOP,LIMIT,ROWNUM子句
SQL ORDER BY排序子句
SQL GROUP BY(分組)
SQL Distinct關鍵字
SQL排序結果
SQL約束
SQL Join聯接
SQL INNER JOIN(內部連接)
SQL LEFT JOIN(左連接)
SQL RIGHT JOIN(右連接)
SQL FULL JOIN(全連接)
SQL自連接
SQL笛卡爾或交叉連接
SQL UNION子句/操作符
SQL INTERSECT子句
SQL EXCEPT子句
SQL別名語法
SQL索引
SQL ALTER TABLE(修改表)
SQL TRUNCATE TABLE(截斷表)
SQL View(視圖)
SQL Having子句
SQL事務
SQL通配符運算符
SQL日期函數
SQL ADDDATE()函數
SQL ADDTIME()函數
SQL CONVERT_TZ()函數
SQL CURDATE()函數
SQL CURRENT_DATE()函數
SQL CURTIME()函數
SQL CURRENT_TIME()函數
SQL CURRENT_TIMESTAMP()方法
SQL DATE(expr)函數
SQL DATEDIFF()方法
SQL DATE_ADD()和DATE_SUB()方法
SQL DATE_FORMAT()函數
SQL DATE_SUB()方法
SQL DAY()函數
SQL DAYNAME()函數
SQL DAYOFMONTH()函數
SQL DAYOFWEEK()函數
SQL DAYOFYEAR()函數
SQL EXTRACT()函數
SQL FROM_DAYS()函數
SQL FROM_UNIXTIME()函數
SQL HOUR()方法
SQL LAST_DAY()函數
SQL LOCALTIME和LOCALTIME()函數
SQL LOCALTIMESTAMP和LOCALTIMESTAMP()函數
SQL MAKEDATE()函數
SQL MAKETIME()函數
SQL MICROSECOND()函數
SQL MINUTE()函數
SQL MONTH()函數
SQL MONTHNAME()函數
SQL NOW()函數
SQL PERIOD_ADD()函數
SQL PERIOD_DIFF()函數
SQL QUARTER()函數
SQL SECOND()函數
SQL SEC_TO_TIME()函數
SQL STR_TO_DATE()函數
SQL SUBDATE()函數
SQL SUBTIME()函數
SQL SYSDATE()函數
SQL TIME()函數
SQL TIMEDIFF()函數
SQL TIMESTAMP()函數
SQL TIMESTAMPADD()函數
SQL TIMESTAMPDIFF()函數
SQL TIME_FORMAT()函數
SQL TIME_TO_SEC()函數
SQL TO_DAYS()函數
SQL UNIX_TIMESTAMP()函數
SQL UTC_DATE()函數
SQL UTC_TIME()函數
SQL UTC_TIMESTAMP()函數
SQL WEEK()函數
SQL WEEKDAY()函數
SQL WEEKOFYEAR()函數
SQL YEAR()函數
SQL YEARWEEK()函數
SQL臨時表
SQL克隆表
SQL子查詢
SQL使用序列(自動遞增)
SQL DISTINCT重複處理
SQL注入
SQL實用函數
SQL MAX()函數
SQL MIN()函數
SQL AVG()函數
SQL SUM()函數
SQL SQRT()函數
SQL RAND()函數
SQL CONCAT()函數
SQL數值函數
SQL ABS()函數
SQL ACOS()函數
SQL ASIN(X)函數
SQL ATAN(X)函數
SQL ATAN2()函數
SQL BIT_AND()函數
SQL BIT_COUNT()函數
SQL BIT_OR()函數
SQL CEIL()函數
SQL CONV()函數
SQL COS()函數
SQL COT()函數
SQL DEGREES()函數
SQL EXP(X)函數
SQL FLOOR(X)函數
SQL FORMAT(X,D)函數
SQL GREATEST()函數
SQL INTERVAL()函數
SQL LEAST()函數
SQL LOG()函數
SQL LOG10(X)函數
SQL MOD()函數
SQL OCT(N)函數
SQL PI()函數
SQL POW()函數
SQL RADIANS()函數
SQL ROUND()函數
SQL SIGN(X)函數
SQL SIN(X)函數
SQL SQRT(X)函數
SQL STD()函數
SQL TAN(X)函數
SQL TRUNCATE()函數
SQL字符串函數
SQL ASCII(str)函數
SQL BIN(N)函數
SQL BIT_LENGTH()函數
SQL CHAR()函數
SQL CHAR_LENGTH()函數
SQL CHARACTER_LENGTH()函數
SQL字符串CONCAT()函數
SQL CONCAT_WS()函數
SQL CONV(N,from_base,to_base)函數
SQL ELT()函數
SQL EXPORT_SET()函數
SQL FIELD()函數
SQL FIND_IN_SET()函數
SQL FORMAT()函數
SQL HEX()函數
SQL INSERT()函數
SQL INSTR()函數
SQL LCASE()函數
SQL LEFT()函數
SQL LENGTH()函數
SQL LOAD_FILE()函數
SQL LOCATE()函數
SQL LOWER()函數
SQL LPAD()函數
SQL LTRIM()函數
SQL MAKE_SET()函數
SQL MID()函數
SQL OCT()函數
SQL OCTET_LENGTH()函數
SQL ORD()函數
SQL POSITION()函數
SQL QUOTE()函數
SQL REGEXP模式
SQL REPEAT()函數
SQL REPLACE()函數
SQL REVERSE()函數
SQL RIGHT()函數
SQL RPAD()函數
SQL SOUNDEX()函數
SQL SPACE()函數
SQL STRCMP()函數
SQL SUBSTRING()函數
SQL SUBSTRING_INDEX()函數
SQL TRIM()函數
SQL UCASE()函數
SQL UNHEX()函數
SQL UPPER()函數

SQL Count()函數

本教程將向您展示如何使用SQL COUNT函數來獲取組中的項目數。

1. SQL COUNT函數簡介

SQL COUNT函數是一個聚合函數,它返回符合條件行數。 可以使用SELECT語句中的COUNT函數來獲取員工數量,每個部門的員工數量,指定工作崗位的員工數量等。

以下是SQL COUNT函數的語法:

COUNTC ([ALL | DISTINCT] expression);

COUNT函數的結果取決於傳遞給它的參數。

  • 默認情況下,COUNT函數使用ALL關鍵字,無論是否指定它。 ALL關鍵字表示考慮組中的所有項目,包括重複值。 例如,如果有一個數據集合(1,2,3,3,4,4)並應用COUNT函數,則結果爲6

  • 如果明確指定DISTINCT關鍵字,則僅考慮唯一的非NULL值。 如果將COUNT函數應用於數據集(1,2,3,3,4,4),則COUNT函數返回4

另一種形式的COUNT函數接受星號(*)作爲參數如下:

COUNT(*)

COUNT(*)函數返回表中的行數,包括包含NULL值的行。

2. SQL COUNT函數示例

下面舉一些例子來看看COUNT函數是如何工作的。將使用示例數據庫中的employees表進行演示。

2.1. SQL COUNT(*)示例

要獲取employees表中的行數,請使用COUNT(*)函數,如下所示:

SELECT 
    COUNT(*)
FROM
    employees;

執行上面查詢語句,得到以下結果:

+----------+
| COUNT(*) |
+----------+
|       40 |
+----------+
1 row in set

要查找在部門ID爲 6 中工作的員工數量,請將WHERE子句添加到查詢中,如下所示:

SELECT 
    COUNT(*)
FROM
    employees
WHERE
    department_id = 6;

執行上面查詢語句,得到以下結果:

+----------+
| COUNT(*) |
+----------+
|        5 |
+----------+
1 row in set

同樣,要查詢工作崗位ID爲9的員工數量,請使用以下語句:

SELECT 
    COUNT(*)
FROM
    employees
WHERE
    job_id = 9;

執行上面查詢語句,得到以下結果:

+----------+
| COUNT(*) |
+----------+
|        5 |
+----------+
1 row in set

2.2. SQL COUNT與GROUP BY子句示例

要查找每個部門的員工數,請使用COUNT和GROUP BY子句,如下所示:

SQL

要在結果集中獲取部門名稱,需要將employees表與departments表內連接,如下所示:

SELECT
    e.department_id,
    department_name,
    COUNT(*)
FROM
    employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
    e.department_id;

執行上面查詢語句,得到以下結果:
SQL

2.3. SQL COUNT(*)帶有ORDER BY子句的示例

可以在COUNT(*)函數使用ORDER BY子句對每個組的行數進行排序。 例如,以下語句獲取每個部門的員工數,並根據員工數按降序對結果集進行排序。

SELECT
    e.department_id,
    department_name,
    COUNT(*)
FROM
    employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
    e.department_id
ORDER BY
    COUNT(*) DESC;

執行上面查詢語句,得到以下結果:

SQL

2.4. SQL COUNT帶有HAVING子句的示例
要按COUNT(*)函數的結果過濾分組,需要在COUNT(*)函數使用HAVING子句。

例如,以下語句獲取部門及其員工數量。 此外,它僅選擇員工人數大於5的部門。

SELECT
    e.department_id,
    department_name,
    COUNT(*)
FROM
    employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
    e.department_id
HAVING
    COUNT(*) > 5
ORDER BY
    COUNT(*) DESC;

執行上面查詢語句,得到以下結果:

SQL

2.5. SQL COUNT(DISTINCT表達式)示例
要獲取employees表中的工作崗位數,請將COUNT函數應用於job_id列,如下所示:

SELECT 
    COUNT(job_id)
FROM
    employees;

執行上面示例代碼,得到以下結果:

+---------------+
| COUNT(job_id) |
+---------------+
|            40 |
+---------------+
1 row in set

上面查詢中返回結果爲:40,其中包含重複的工作崗位ID。 我們希望找出工作崗位數量,則要刪除重複項,那麼要將DISTINCT關鍵字添加到COUNT函數,如下所示:

SELECT 
    COUNT(DISTINCT job_id)
FROM
    employees;
+------------------------+
| COUNT(DISTINCT job_id) |
+------------------------+
|                     19 |
+------------------------+
1 row in set

可以使用COUNT DISTINCT獲取經理數量,如下查詢:

SELECT 
    COUNT(DISTINCT manager_id)
FROM
    employees;
+----------------------------+
| COUNT(DISTINCT manager_id) |
+----------------------------+
|                         10 |
+----------------------------+
1 row in set

注意: 主席沒有經理。

在本教程中,您學習了應用SQL COUNT函數以獲取組中行數的各種方法。