Case when搭配sum
时间: 2023-06-12 16:06:06 浏览: 222
在SQL中,CASE WHEN语句可以与SUM函数一起使用,用于对符合条件的记录进行统计求和。
例如,假设有一张销售订单表,其中包含商品名称、销售数量和单价等字段。现在需要统计每种商品的销售总额,可以使用以下SQL语句:
```
SELECT
商品名称,
SUM(CASE WHEN 销售数量 > 0 THEN 销售数量 * 单价 ELSE 0 END) AS 销售总额
FROM
订单表
GROUP BY
商品名称
```
在上述SQL语句中,使用了CASE WHEN语句对销售数量大于0的记录进行了条件判断,如果符合条件,则将销售数量乘以单价进行求和;否则将该记录的销售总额置为0。最终使用SUM函数对符合条件的销售总额进行求和,得到了每种商品的销售总额。
相关问题
case when 搭配 sum
引用中提到了使用case when搭配sum函数的例子,可以根据条件进行求和操作。例如,可以使用以下语句来计算C=1和C=2时D和E的和:
SELECT sum(case when C=1 then D else 0 end)/sum(case when C=1 then E else 0 end) as C1, sum(case when C=2 then D else 0 end)/sum(case when C=2 then E else 0 end) as C2,B
FROM test.newrain
GROUP BY B
引用中也给出了一些使用case when搭配sum函数的例子。例如,可以使用以下语句来计算每个人的不同科目的最高分:
SELECT tname as '姓名' , max(case ttype when '语文' then tscor else 0 end) '语文', max(case ttype when '数学' then tscor else 0 end) '数学', max(case ttype when '英语' then tscor else 0 end) '英语'
FROM testScore
GROUP BY tname
另外,引用中还给出了一个使用case when搭配sum函数的例子,可以根据科目的不同进行分组并计算总分。例如,可以使用以下语句来计算每个人的总分以及科别:
SELECT tname as '姓名', case when ttype='数学' then '理科' else '文科' end as '科别', sum(tscor) as '总分'
FROM testscore
GROUP BY tname, case when ttype='数学' then '理科' else '文科' end
通过以上例子,可以看出使用case when搭配sum函数可以根据条件进行求和操作,并且可以根据不同的条件进行分组和计算结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [sql语言中group by和case when及sum(case when)的结合使用](https://blog.csdn.net/WuLex/article/details/115055979)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
case when sum 和 sum case when 的区别
CASE WHEN SUM和SUM CASE WHEN是SQL语句中用于统计和计算的两种不同的方法。
首先,SUM CASE WHEN语句是一种条件聚合函数,它可以根据一个或多个条件来计算聚合值,适用于需要根据特定条件进行分组计算的情况。例如,我们可以使用以下语句计算每个部门的销售额:
```
SELECT department, SUM(CASE WHEN product = 'A' THEN sales ELSE 0 END) AS 'A Sales', SUM(CASE WHEN product = 'B' THEN sales ELSE 0 END) AS 'B Sales', SUM(CASE WHEN product = 'C' THEN sales ELSE 0 END) AS 'C Sales'
FROM sales_table
GROUP BY department;
```
以上语句会将销售表按照部门分组,并计算出A、B、C三个产品的销售额,其中如果某个部门没有销售某个产品,则该产品的销售额为0。
相比之下,SUM CASE WHEN语句是将条件放在了聚合函数SUM内部,使用方式更加简单,适用于不需要按条件分组计算的情况。例如,我们可以使用以下语句计算所有订单的总销售额:
```
SELECT SUM(CASE WHEN status = 'paid' THEN total_price ELSE 0 END) AS 'Paid Sales',
SUM(CASE WHEN status = 'unpaid' THEN total_price ELSE 0 END) AS 'Unpaid Sales'
FROM orders_table;
```
以上语句会将所有订单按照是否支付完成分为两组,并计算出已支付和未支付订单的总销售额。
阅读全文