欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL 中 COUNT 的用法示例詳解

 更新時(shí)間:2024年12月13日 09:44:32   作者:qq_62851576  
本文給大家介紹了SQL中的COUNT函數(shù)及其各種用法,包括統(tǒng)計(jì)總行數(shù)、特定列的非NULL值數(shù)量、不重復(fù)值數(shù)量,以及如何與GROUPBY、HAVING和JOIN結(jié)合使用,感興趣的朋友一起看看吧

1. COUNT(*):統(tǒng)計(jì)總行數(shù)

COUNT(*) 是 SQL 中最常用的統(tǒng)計(jì)方式之一。它會(huì)統(tǒng)計(jì)查詢結(jié)果集中所有行的數(shù)量(包括 NULL 值)。

語法:

SELECT COUNT(*) FROM 表名;

示例: 假設(shè)我們有一個(gè) employees 表,包含以下數(shù)據(jù):

idnameagedepartment
1John Doe30Sales
2Jane SmithNULLHR
3Alice Brown25NULL

執(zhí)行以下查詢:

SELECT COUNT(*) FROM employees;

結(jié)果:

3

解釋: COUNT(*) 會(huì)統(tǒng)計(jì)所有行,不會(huì)忽略 NULL 值,即使某些列有 NULL,它也會(huì)計(jì)算每一行。因此,結(jié)果為 3,表示表中共有 3 行數(shù)據(jù)。

2. COUNT(1):統(tǒng)計(jì)總行數(shù)

COUNT(1) 的作用與 COUNT(*) 類似,也會(huì)統(tǒng)計(jì)表中所有的行。它是 SQL 優(yōu)化中的一個(gè)小技巧,某些數(shù)據(jù)庫系統(tǒng)(如 MySQL)會(huì)對其進(jìn)行優(yōu)化處理。

語法:

SELECT COUNT(1) FROM 表名;

解釋: COUNT(1)COUNT(*) 的結(jié)果是相同的,都會(huì)返回表中所有行的數(shù)量。數(shù)據(jù)庫會(huì)將 1 替代成一個(gè)常量來參與計(jì)算,并且不會(huì)關(guān)心每一列的具體值。

優(yōu)化區(qū)別: 在某些數(shù)據(jù)庫系統(tǒng)(如 MySQL)中,COUNT(1)COUNT(*) 在執(zhí)行計(jì)劃中的表現(xiàn)可能相同,查詢效率基本沒有區(qū)別。然而,某些舊版的數(shù)據(jù)庫系統(tǒng)在處理 COUNT(*) 時(shí),會(huì)去解析整行數(shù)據(jù),而 COUNT(1) 可以直接統(tǒng)計(jì)行數(shù),因此會(huì)有一些微小的性能差異。

3. COUNT(列名):統(tǒng)計(jì)特定列中非 NULL 值的數(shù)量

COUNT(*) 不同,COUNT(列名) 只會(huì)統(tǒng)計(jì)指定列中非 NULL 值的數(shù)量。如果某列中有 NULL 值,COUNT(列名) 會(huì)自動(dòng)跳過它們。

語法:

SELECT COUNT(列名) FROM 表名;

示例:

SELECT COUNT(age) FROM employees;

結(jié)果

2

4. COUNT(DISTINCT 列名):統(tǒng)計(jì)某列中不重復(fù)的非 NULL 值的數(shù)量

有時(shí),我們不僅需要統(tǒng)計(jì)某列中的非 NULL 值,還需要統(tǒng)計(jì)不重復(fù)的值。在這種情況下,可以使用 COUNT(DISTINCT 列名) 來完成這個(gè)任務(wù)。

語法:

SELECT COUNT(DISTINCT 列名) FROM 表名;

示例: 假設(shè)我們有以下表數(shù)據(jù):

iddepartment
1Sales
2HR
3Sales
4IT

查詢:

SELECT COUNT(DISTINCT department) FROM employees;

結(jié)果:

3

解釋: 表中有三個(gè)不重復(fù)的 department 值:Sales, HR, IT。因此,COUNT(DISTINCT department) 返回 3,表示有 3 個(gè)不同的部門。

5. COUNT()GROUP BY 的結(jié)合

COUNT() 函數(shù)經(jīng)常和 GROUP BY 子句結(jié)合使用,用于統(tǒng)計(jì)每個(gè)分組的數(shù)量。GROUP BY 按照某列對數(shù)據(jù)進(jìn)行分組,COUNT() 則對每個(gè)分組內(nèi)的行數(shù)進(jìn)行統(tǒng)計(jì)。

6. COUNTHAVING 的結(jié)合

HAVING 子句通常與 GROUP BY 一起使用,用來過濾聚合結(jié)果。它可以用來限制返回的分組數(shù)量,條件可以基于 COUNT() 等聚合函數(shù)的結(jié)果。

7. COUNTJOIN 的結(jié)合

在復(fù)雜的查詢中,COUNT() 函數(shù)可以與 JOIN 子句一起使用,統(tǒng)計(jì)與另一個(gè)表匹配的記錄數(shù)量。

示例:

SELECT d.department, COUNT(e.id) 
FROM departments d 
LEFT JOIN employees e ON d.id = e.department_id 
GROUP BY d.department;

解釋: 此查詢會(huì)返回每個(gè)部門中員工的數(shù)量,即使某些部門沒有員工,也會(huì)返回該部門的記錄(因?yàn)槭褂昧?LEFT JOIN)。使用 COUNT(e.id) 統(tǒng)計(jì)每個(gè)部門中關(guān)聯(lián)的員工數(shù)量。

COUNT(*)COUNT(1) 的區(qū)別

區(qū)別

  • 在大多數(shù)數(shù)據(jù)庫系統(tǒng)中,COUNT(*)COUNT(1) 的性能幾乎相同。COUNT(*) 會(huì)統(tǒng)計(jì)表中所有行,而不關(guān)心列內(nèi)容,而 COUNT(1) 則是將 1 作為一個(gè)固定值用于統(tǒng)計(jì)。
  • 在某些數(shù)據(jù)庫系統(tǒng)中,COUNT(1) 被認(rèn)為稍微高效一點(diǎn),因?yàn)樗恍枰馕鏊辛?,只是使用常?1 來計(jì)數(shù)。

結(jié)論: 現(xiàn)代數(shù)據(jù)庫(如 MySQL)會(huì)對 COUNT(*)COUNT(1) 做優(yōu)化處理,因此二者的性能差異幾乎可以忽略。選擇哪種方式可以根據(jù)個(gè)人習(xí)慣或項(xiàng)目規(guī)范。

總結(jié)

  • COUNT(*):統(tǒng)計(jì)表中所有行,包括 NULL 值。
  • COUNT(1):與 COUNT(*) 類似,統(tǒng)計(jì)所有行。
  • COUNT(列名):統(tǒng)計(jì)某列中非 NULL 值的數(shù)量。
  • COUNT(DISTINCT 列名):統(tǒng)計(jì)某列中不重復(fù)的非 NULL 值。
  • COUNT 可與 GROUP BYHAVING 等子句結(jié)合,進(jìn)行復(fù)雜的分組統(tǒng)計(jì)和條件過濾。
  • COUNT(*)COUNT(1) 在大多數(shù)數(shù)據(jù)庫中性能相同,可以按習(xí)慣使用。

到此這篇關(guān)于SQL 中 COUNT 的用法示例詳解的文章就介紹到這了,更多相關(guān)sql count用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • sqlserver中獲取date類的年月日語句

    sqlserver中獲取date類的年月日語句

    這篇文章主要介紹了sqlserver中通過date類獲取年月日的語句,需要的朋友可以參考下
    2013-06-06
  • SQL Server中數(shù)據(jù)類型轉(zhuǎn)換的原理、使用方法、常見場景示例講解

    SQL Server中數(shù)據(jù)類型轉(zhuǎn)換的原理、使用方法、常見場景示例講解

    在SQLServer中,數(shù)據(jù)類型轉(zhuǎn)換包含隱式轉(zhuǎn)換和顯式轉(zhuǎn)換兩種方式,隱式轉(zhuǎn)換由系統(tǒng)自動(dòng)完成,而顯式轉(zhuǎn)換需要使用CAST或CONVERT函數(shù),本文詳細(xì)講解了數(shù)據(jù)類型轉(zhuǎn)換的原理、使用方法和常見場景,并提供了具體示例,同時(shí),介紹了錯(cuò)誤處理函數(shù)TRY_CAST和TRY_CONVERT
    2024-09-09
  • SQL的SUBSTR()函數(shù)使用介紹

    SQL的SUBSTR()函數(shù)使用介紹

    SUBSTR函數(shù)是用來截取數(shù)據(jù)庫某一列字段中的一部分,在各個(gè)數(shù)據(jù)庫的函數(shù)名稱不一樣,下面為大家介紹其具體的使用
    2013-11-11
  • SQL子查詢的具體使用

    SQL子查詢的具體使用

    SQL子查詢是嵌套在其他SQL查詢中的查詢,本文主要介紹了SQL子查詢的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • SQL Server 2005 數(shù)據(jù)庫轉(zhuǎn) SQL Server 2000的方法小結(jié)

    SQL Server 2005 數(shù)據(jù)庫轉(zhuǎn) SQL Server 2000的方法小結(jié)

    這篇文章主要介紹了SQL Server 2005 數(shù)據(jù)庫轉(zhuǎn) SQL Server 2000的方法,需要的朋友可以參考下
    2014-04-04
  • SQL?Server數(shù)據(jù)庫備份和恢復(fù)數(shù)據(jù)庫的全過程

    SQL?Server數(shù)據(jù)庫備份和恢復(fù)數(shù)據(jù)庫的全過程

    最近在功能調(diào)試前需要先將測試數(shù)據(jù)庫備份,然后功能調(diào)試之后再將測試數(shù)據(jù)庫還原,這樣就可以重復(fù)的進(jìn)行功能調(diào)試,這篇文章主要給大家介紹了關(guān)于SQL?Server數(shù)據(jù)庫備份和恢復(fù)數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • 關(guān)于SQL 存儲(chǔ)過程入門基礎(chǔ)(基礎(chǔ)知識)

    關(guān)于SQL 存儲(chǔ)過程入門基礎(chǔ)(基礎(chǔ)知識)

    本篇文章,小編將為大家介紹關(guān)于SQL 存儲(chǔ)過程入門基礎(chǔ)(基礎(chǔ)知識),有需要的朋友可以參考一下
    2013-04-04
  • SQL Server數(shù)據(jù)庫基本概念、組成、常用對象與約束

    SQL Server數(shù)據(jù)庫基本概念、組成、常用對象與約束

    這篇文章介紹了SQL Server數(shù)據(jù)庫的基本概念、組成、常用對象與約束,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • SQL語句中JOIN的用法場景分析

    SQL語句中JOIN的用法場景分析

    本文帶領(lǐng)大家探討下sql語句中join的用法,本文通過場景分析給大家介紹的很詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • 一步步教你建立SQL數(shù)據(jù)庫的表分區(qū)

    一步步教你建立SQL數(shù)據(jù)庫的表分區(qū)

    分區(qū)存儲(chǔ)提高了數(shù)據(jù)庫的性能,被分區(qū)存儲(chǔ)的數(shù)據(jù)物理上是多個(gè)文件,但邏輯上任然是一個(gè)表,對表的任何操作都跟沒分區(qū)之前一樣。插入、刪除、查詢、更新等操作的時(shí)候,數(shù)據(jù)庫會(huì)自動(dòng)為你找到對應(yīng)的分區(qū),然后執(zhí)行操作。
    2015-09-09

最新評論