例子一:
有一个表,数据如:
mysql> select * from tid_action;
+----+------+-------------+
| id | tid | action |
+----+------+-------------+
| 1 | 47 | restorePost |
| 2 | 47 | restorePost |
| 3 | 47 | restorePost |
| 4 | 47 | replyTopic |
| 5 | 47 | replyTopic |
| 6 | 47 | deletePost |
| 7 | 48 | replyTopic |
| 8 | 48 | replyTopic |
| 9 | 48 | restorePost |
| 10 | 48 | deletePost |
| 11 | 48 | deletePost |
| 12 | 48 | deletePost |
| 13 | 48 | restorePost |
+----+------+-------------+
13 rows in set (0.01 sec)
现在要按tid 分组统计,每个tid的action类型replyTopic 、restorePost 、deletePost 分别有多少行。
sql语句:
SELECT tid, sum(CASE WHEN ACTION='replyTopic' THEN 1 ELSE 0 END ) replyCount, sum(CASE WHEN ACTION='restorePost' THEN 1 ELSE 0 END ) restoreCount, sum(CASE WHEN ACTION='deletePost' THEN 1 ELSE 0 END ) deleteCount FROM tid_action GROUP BY tid
查询结果:
+------+------------+--------------+-------------+
| tid | replyCount | restoreCount | deleteCount |
+------+------------+--------------+-------------+
| 47 | 2 | 3 | 1 |
| 48 | 2 | 2 | 3 |
+------+------------+--------------+-------------+
2 rows in set (0.00 sec)
例子二:
有一个bbs7_activity_item表,主要字段如下,activityitemid是主键,STATUS=1表示审核通过的状态。
现在想创建一个新表,来统计总的人数和审核通过的人数,按照tid分组,简单写法:
CREATE TABLE activity_signUp_censored AS SELECT tid,sum(persons) signUpCount, sum(CASE WHEN STATUS = 1 THEN persons ELSE 0 END) censoredCount FROM bbs7_activity_item GROUP BY tid
经验证,这个sql是正确的。
相关推荐
`CASE WHEN` 提供了灵活的条件判断机制,而 `SUM CASE WHEN` 则使得对数据进行条件性聚合变得更加简单。结合字符串拼接功能,这些技术可以帮助我们在复杂的数据处理任务中更加高效地完成工作。在实际应用中,根据...
### Oracle CASE WHEN 用法详解 #### 一、概述 在 Oracle 数据库中,`CASE WHEN` 表达式提供了一种在 SQL 查询中实现条件判断的方法,这使得开发人员能够在不使用 PL/SQL 的情况下编写更为灵活和复杂的查询语句。`...
1. CASE WHEN 表达式有两种形式 代码如下:–简单Case函数 CASE sex WHEN ‘1’ THEN ‘男’ WHEN ‘2’ THEN ‘女’ ELSE ‘其他’ END –Case搜索函数 CASEWHEN sex = ‘1’ THEN ‘男’ WHEN sex = ‘2’ ...
标题《Case_When用法》为我们提供了一个深入学习SQL中Case表达式使用方法的契机。在SQL中,Case表达式是一个条件分支结构,允许在查询中进行条件判断,并基于条件返回不同的结果。该表达式分为两种格式:简单Case...
以下是对CASE关键字在SQL Server中不同用法的详细解释: 1. **在SELECT语句中的基本用法**: CASE表达式通常在SELECT语句中用来根据特定条件为数据列创建新的计算字段。例如,你可以根据书籍的价格范围给价格打...
本文档介绍了SQL中case...when的用法。
`Case`语句有两种基本形式:简单`Case`表达式和搜索`Case`表达式。 #### 一、简单`Case`表达式 简单`Case`表达式通常用于基于列值的条件判断,其语法结构如下: ```sql CASE WHEN <condition1> THEN WHEN ...
在本实例中,我们看到`switch`与`case`结合使用,来实现一个简单的收银付费小程序。下面我们将深入探讨`switch`和`case`的用法,并基于提供的代码片段进行详细解释。 首先,`switch`语句通常包含一个表达式,该...
SQL 中 Case 用法 Case 语句是 SQL 中一种强大的语句,用于根据不同的条件执行不同的操作。它可以用来实现复杂的逻辑操作,并且可以与其他 SQL 语句结合使用以实现更加复杂的查询。 SQL 中 Case 语句有两种格式:...
在SQL查询中,`CASE WHEN`、`EXISTS`、`NOT EXISTS`以及`IN`和`NOT IN`是常用的操作符,它们用于处理复杂的条件判断和数据筛选。这些概念对于理解和编写高效的SQL语句至关重要,尤其是在数据分析和数据库管理中。 `...
Sql_Case_When用法用例[参考].pdf
SQL__case_when_then_的用法
该语句的执行过程是:将CASE后面表达式的值与各WHEN子句中的表达式的值进行比较,如果两者相等,则返回THEN后的表达式的值,然后跳出CASE语句,否则返回ELSE子句中的表达式的值。ELSE子句是可选项。当CASE语句中不...
在这个实例中,我们将深入理解如何使用CASE WHEN,并通过几个具体的例子来演示其用法。 首先,我们来看一个简单的使用CASE WHEN进行字符串替换的例子。在这个示例中,我们有一个名为sales的表,其中包含了category...
MySQL是世界上最受欢迎的关系型数据库管理系统之一,其性能优化对于任何依赖于它的应用程序来说都是至关重要的。以下是从"MySQL性能优化的最佳21条经验"中提取的一些关键知识点: 1. **索引优化**:索引是提升查询...
在SQL Server中,`CASE WHEN` 语句是一种强大的逻辑表达式,用于处理基于不同条件的复杂查询。在多条件模糊查询中,`CASE WHEN` 可以避免在...了解并熟练掌握`CASE WHEN` 的用法,可以提升SQL编程的灵活性和实用性。
### CASE的用法 (Transact-SQL) #### 概述 `CASE` 是 Transact-SQL 中一个非常重要的关键字,用于根据不同的条件返回不同的结果。它支持两种主要的格式:简单表达式和搜索表达式。这两种格式都能有效地帮助开发者...
简单CASE语句主要用于比较一个表达式(case_expression)与一系列预定义的值(when_expression)。基本语法如下: ```sql CASE case_expression WHEN when_expression_1 THEN commands WHEN when_expression_2 ...
-- 简单 CASE 用法示例 CASE sex WHEN '1' THEN '男性' WHEN '2' THEN '女性' ELSE '未知' END ``` 这里,`CASE` 表达式根据 `sex` 列的值返回相应的性别名称。 #### 搜索 CASE 表达式 搜索 `CASE` 表达式则是...