在 MySQL 中,COUNTIF
函數(shù)并不存在,但你可以使用 COUNT()
和 CASE
語(yǔ)句來(lái)實(shí)現(xiàn)類似的功能
假設(shè)我們有一個(gè)名為 orders
的表,其中包含以下列:order_id
、customer_id
和 order_date
?,F(xiàn)在,我們想要統(tǒng)計(jì)每個(gè)客戶在特定日期范圍內(nèi)的訂單數(shù)量。
首先,我們需要?jiǎng)?chuàng)建一個(gè)子查詢,該查詢將根據(jù)給定的條件(例如,特定日期范圍)篩選訂單。然后,我們可以使用 COUNT()
和 CASE
語(yǔ)句來(lái)計(jì)算滿足條件的訂單數(shù)量。
以下是一個(gè)示例查詢,該查詢統(tǒng)計(jì)了每個(gè)客戶在 2021 年 1 月 1 日至 2021 年 1 月 31 日之間的訂單數(shù)量:
SELECT
customer_id,
COUNT(CASE WHEN order_date BETWEEN '2021-01-01' AND '2021-01-31' THEN 1 ELSE NULL END) AS orders_count
FROM
orders
WHERE
order_date BETWEEN '2021-01-01' AND '2021-01-31'
GROUP BY
customer_id;
在這個(gè)查詢中,我們首先使用 WHERE
子句篩選出特定日期范圍內(nèi)的訂單。然后,我們使用 COUNT()
和 CASE
語(yǔ)句計(jì)算每個(gè)客戶的訂單數(shù)量。CASE
語(yǔ)句會(huì)在 order_date
在指定范圍內(nèi)時(shí)返回 1,否則返回 NULL
。COUNT()
函數(shù)會(huì)計(jì)算非空值的數(shù)量,從而得到滿足條件的訂單數(shù)量。最后,我們使用 GROUP BY
子句按客戶分組結(jié)果。