Case When在分組統(tǒng)計(jì)中的應(yīng)用

sql
小樊
83
2024-08-30 16:53:55

CASE WHEN 是 SQL 語(yǔ)言中的一個(gè)條件表達(dá)式,它可以在分組統(tǒng)計(jì)查詢中應(yīng)用,用于對(duì)數(shù)據(jù)進(jìn)行分類和計(jì)算

以下是一個(gè)使用 CASE WHEN 的分組統(tǒng)計(jì)示例。假設(shè)我們有一個(gè)名為 orders 的表,其中包含以下列:order_id、customer_id、order_dateamount。現(xiàn)在,我們想要根據(jù)訂單金額將客戶分為三類:小額訂單(<100)、中等訂單(100-500)和大額訂單(>500),并計(jì)算每個(gè)類別的訂單數(shù)量。

SELECT
  customer_id,
  COUNT(CASE WHEN amount < 100 THEN 1 END) AS small_orders,
  COUNT(CASE WHEN amount >= 100 AND amount <= 500 THEN 1 END) AS medium_orders,
  COUNT(CASE WHEN amount > 500 THEN 1 END) AS large_orders
FROM
  orders
GROUP BY
  customer_id;

在這個(gè)查詢中,我們使用了 CASE WHEN 表達(dá)式來(lái)對(duì)訂單金額進(jìn)行分類。當(dāng)訂單金額滿足特定條件時(shí),CASE WHEN 會(huì)返回 1,否則返回 NULL。然后,我們使用 COUNT() 函數(shù)來(lái)計(jì)算每個(gè)類別的訂單數(shù)量。注意,COUNT() 函數(shù)不會(huì)計(jì)算 NULL 值,因此只有滿足條件的行才會(huì)被計(jì)算。

這個(gè)查詢將返回一個(gè)結(jié)果集,其中包含每個(gè)客戶的 ID 以及他們的小額訂單、中等訂單和大額訂單的數(shù)量。

0