如何统计SQL中的多个case语句,包括最后的“if”语句?

问题描述 投票:0回答:1

假设我有一个问题要求根据几个条件计算订单数量:-

  1. 设备类型“A”和价格< $2
  2. 设备类型“A”和价格在 2-3 美元之间
  3. 设备类型“B”和价格 > 3 美元
  4. 其他一切都是“其他”

回答问题的示例查询如下:-

SELECT
COUNT(CASE WHEN Device Type = "A" AND Price < 2 THEN '1' END),
COUNT(CASE WHEN Device Type = "A" AND Price IN (2,3) THEN '1' END),
COUNT(CASE WHEN Device Type = "B" AND Price > 3 THEN '1' END)
FROM table

我的问题是:我如何将其他所有条件的最后一个条件 (4) 算作“其他”?(例如,它可能是设备类型 A 但超过 3 美元或设备类型 B 但低于 3 美元)

我是一个初学者 SQL 用户,所以如果这看起来像是一个直接盯着我看的答案,我深表歉意。

sql sql-server case aggregate-functions
1个回答
0
投票
SELECT
COUNT(CASE WHEN DeviceType = 'A' AND Price < 2 THEN '1' END),
COUNT(CASE WHEN DeviceType = 'A' AND Price IN (2,3) THEN '1' END),
COUNT(CASE WHEN DeviceType = 'B' AND Price > 3 THEN '1' END),
COUNT(CASE WHEN (DeviceType = 'A' AND Price < 2)
    OR (DeviceType = 'A' AND Price IN (2,3))
    OR (DeviceType = 'B' AND Price > 3) THEN NULL ELSE 1 END)
FROM yourTable;
© www.soinside.com 2019 - 2024. All rights reserved.