case when 嵌套聚合函数
时间: 2023-06-22 13:30:07 浏览: 110
SQL集合函数中case when then 使用技巧
5星 · 资源好评率100%
当我们需要在 CASE WHEN 子句中嵌套聚合函数时,需要注意以下两点:
1. 聚合函数应该放在 CASE WHEN 子句中,而不是放在 THEN 或 ELSE 子句中。
2. 如果需要在 SELECT 子句中引用 CASE WHEN 子句中的聚合函数,需要使用子查询或者 CTE(公共表表达式)将其结果保存到一个临时表中。
例如,下面的 SQL 查询将订单表中金额大于 100 的订单按照客户类型进行统计,并将结果按照客户类型和统计值降序排序:
```
WITH high_amount_orders AS (
SELECT
customer_type,
COUNT(*) AS order_count,
SUM(CASE WHEN amount > 500 THEN 1 ELSE 0 END) AS high_amount_count
FROM orders
GROUP BY customer_type
)
SELECT
customer_type,
order_count,
high_amount_count,
CAST(high_amount_count AS FLOAT) / CAST(order_count AS FLOAT) AS high_amount_ratio
FROM high_amount_orders
ORDER BY customer_type ASC, order_count DESC;
```
在上面的查询中,我们将 CASE WHEN 子句嵌套在了 SUM 函数中,实现了对金额大于 500 的订单数量进行统计。同时,我们使用了 CTE 将查询结果保存到一个临时表中,并在 SELECT 子句中引用了临时表中的聚合函数。这样可以方便地对数据进行处理和分析。
阅读全文