You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用CASE函数编写无窗口函数与子查询的多条件SQL查询

基于CASE函数的客户统计实现方案

可以直接通过GROUP BY结合CASE函数计算所需统计指标,在HAVING子句中同时判断两个条件,最终得到符合要求的客户数量。以下是具体实现代码:

CREATE TABLE Customers (
client INT,
payment INT);

INSERT INTO Customers(client, payment) VALUES
(1, 1000),
(1, 7000),
(1, 6000),
(1, 50000),
(1, 5500),
(1, 5600),
(2, 1000),
(2, 1000);

-- 统计符合条件的客户总数
SELECT COUNT(DISTINCT client) AS qualified_customers
FROM Customers
GROUP BY client
HAVING SUM(CASE WHEN payment > 5000 THEN 1 ELSE 0 END) > 5
   AND AVG(payment) > 10000;

如果需要查看符合条件的客户明细及对应统计数据,可以使用这个查询:

SELECT 
    client,
    SUM(CASE WHEN payment > 5000 THEN 1 ELSE 0 END) AS high_value_payment_count,
    AVG(payment) AS avg_payment_amount
FROM Customers
GROUP BY client
HAVING SUM(CASE WHEN payment > 5000 THEN 1 ELSE 0 END) > 5
   AND AVG(payment) > 10000;

代码说明:

  • SUM(CASE WHEN payment > 5000 THEN 1 ELSE 0 END):用CASE标记每笔超过5000美元的付款为1,其他为0,求和后得到每个客户这类高金额付款的总笔数。
  • AVG(payment):直接计算每个客户的平均付款金额,也可以替换为SUM(payment)/COUNT(*),结果完全一致。
  • GROUP BY client:按客户分组,确保每个客户的付款数据单独聚合统计。
  • HAVING子句:同时筛选出满足两个条件的客户——高金额付款笔数超过5,且平均付款金额超过10000美元。

内容的提问来源于stack exchange,提问作者Eva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 15:00:17