SUM 配合 CASE WHEN

SUM 配合 CASE WHEN 实现条件聚合

SQL 中的 SUM 配合 CASE WHEN 就可以添加条件,例如:

SUM(CASE WHEN a > 0 THEN a ELSE 0 END)Code language: PHP (php)

将 a 列所有大于 0 的值相加。

SUM(CASE WHEN rq > '2015-1-1' AND rq < '2015-2-1' THEN a ELSE 0 END)Code language: PHP (php)

将 rq 为 1 月份的所有 a 列的值相加。

比如下面统计学生的年龄,如果是女同学就年龄减十岁,如果是男同学就年龄加十岁:

-- 单纯使用 sum 来统计
SELECT SUM(s.stu_age) FROM [Test].[dbo].[student] sCode language: CSS (css)
-- 如果是女同学就年龄减十岁,如果是男同学就年龄加十岁
-- 使用 case when then else end
-- sum 里面支持使用 case when
SELECT SUM(CASE s.stu_gender WHEN '女' THEN s.stu_age - 10 ELSE s.stu_age + 10 END)
FROM [Test].[dbo].[student] sCode language: PHP (php)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注