`
zhangyou1010
  • 浏览: 303796 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sql 分组 case when 写法

阅读更多
表结构:
create table scores (studentId int primary key,subject varchar(10),mark number(3,1));

描述:这是一张学生成绩表,字段分别为学生id,科目,成绩.

假如有如下数据
studentId subject  mark
1        A        87.0
2        A        89.0
3        B        89.0
4        A        78.9
5        A        88.9
6        B        78.9
7        B        98.9
8        C        86.9
9        C        96.9
10        C        78.5

要求每门科目的平均成绩以及该门科目的优秀率,优秀率为每门科目中成绩高于85的人数占该科目总人数的比例。

想了一阵用group 分组似乎写不出来。问题在于分组后,要计算该组中成绩超过85的人数,不知道该怎么实现这一点。

后来在cnoug上网友帮我解决了,在这里记录下来。

主要用到了case when 条件控制.
select round(avg(mark),2) avg_mark,
       round(count(case
               when mark >= 85 then
                1
             end) / count(*) * 100,2) p
  from scores
 group by subject


其中round(m,n)函数为四舍五入函数,n为小数点后要保留的位数。
分享到:
评论

相关推荐

    case when和sum case when 写法及拼接字段

    在 SQL 查询语言中,`CASE WHEN` 结构是一种非常有用的工具,可以用来根据条件返回不同的值。它的工作原理类似于编程语言中的 `if...else` 语句,但在 SQL 中用于创建动态列或进行复杂的条件判断。 #### 基本语法 ...

    sql中的case用法

    SQL 中 Case 用法 Case 语句是 SQL 中一种强大的语句,用于根据不同的条件执行不同的操作。它可以用来实现复杂的逻辑操作,并且可以与其他 SQL 语句结合使用以实现更加复杂的查询。 SQL 中 Case 语句有两种格式:...

    PB脚本中SQL语句写法与SQL中语句写法对照

    在SQL语言中,可以使用Update表名Set字段名=case字段名when值1then值2else值三endFrom表名Where条件语句来实现条件语句的写法。 四、取余函数Mod() 在PB脚本中,可以使用Mod(要取余数的值,取余值)函数来实现取余数...

    sql中case语句的用法浅谈

    SQL中Case的使用方法 Case具有两种格式。简单Case函数和Case搜索函数。 代码如下:–简单Case函数 CASE sex  WHEN ‘1’ THEN ‘男’  WHEN ‘2’ THEN ‘女’ ELSE ‘其他’ END –Case搜索函数 CASE WHEN sex = ...

    Case_When用法

    标题《Case_When用法》为我们提供了一个深入学习SQL中Case表达式使用方法的契机。在SQL中,Case表达式是一个条件分支结构,允许在查询中进行条件判断,并基于条件返回不同的结果。该表达式分为两种格式:简单Case...

    浅析SQL语句行列转换的两种方法 case…when与pivot函数的应用

    `CASE...WHEN` 和 `PIVOT` 都能实现SQL中的行列转换,但适用情况和写法有所不同。`CASE...WHEN` 更灵活,适用于简单的转换,而 `PIVOT` 更直观且方便处理复杂转换,特别是涉及多个值到多列的转换。在选择使用哪种...

    sqlserver中Case的使用方法(上下篇)第1/2页

    代码如下: –简单Case函数 CASE sex WHEN ‘1’ THEN ‘男’ WHEN ‘2’ THEN ‘女’ ELSE ‘其他’ END –Case搜索函数 CASE WHEN sex = ‘1’ THEN ‘男’ WHEN sex = ‘2’ THEN ‘女’ ELSE ‘其他’ END 这两种...

    SQL Server存储过程基本语法

    这里通过 `CASE` 语句实现了一个简单的 `WHEN-THEN` 分支结构,根据 `@today` 的值返回对应的星期名称。 以上内容主要介绍了 SQL Server 中存储过程中的一些基本语法和操作方法,包括变量定义及赋值、表和临时表的...

    sqlserver Case函数应用介绍

    –简单Case函数CASE sex WHEN ‘1’ THEN ‘男’ WHEN ‘2’ THEN ‘女’ELSE ‘其他’ END–Case搜索函数CASE WHEN sex = ‘1’ THEN ‘男’ WHEN sex = ‘2’ THEN ‘女’ELSE ‘其他’ END 这两种方式,可以...

    浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用

    `CASE...WHEN` 更通用,不受数据库版本限制,但写法较为复杂;而 `PIVOT` 函数则更为直观简洁,但只适用于支持它的数据库系统,如SQL Server。在实际应用中,应根据数据结构、需求和数据库特性选择合适的方法。

    关于case when语句的报错问题详解

    为了解决这个问题,我们可以调整`CASE WHEN`的写法,利用`IN`关键字来检查值是否在给定的列表中,如下所示: ```sql SELECT CASE WHEN substr(id_card_no, 17, 1) IN (1, 3, 5, 7, 9) THEN '男' WHEN substr(id_...

    DB2常用SQL写法

    DB2中可以使用CASE函数来实现复杂的逻辑判断,例如set prodname = (case when (name is not null) then name when (namestr is not null) then namestr else defaultname end);该语句可以实现对prodname变量的赋值,...

    10个高级sql写法.pdf

    本文将介绍10个高级SQL写法,这些技巧主要源自MySQL 8.0环境,适用于处理各种业务需求。 1. **ORDER BY FIELD() 自定义排序** 在MySQL中,除了常见的`ASC`和`DESC`用于排序外,`ORDER BY FIELD()`函数允许我们...

    MySQL排序中使用CASE WHEN的方法示例

    在MySQL中,`CASE WHEN` 是一个非常强大的表达式,常用于进行复杂的条件判断和排序。这个表达式允许我们在SQL查询中根据不同的条件执行不同的操作,例如改变字段的值或控制排序顺序。在本篇文章中,我们将深入探讨...

    sql\(很长的l模糊查询拼接)sql存储过程

    - **CASE表达式**是一种根据不同条件返回不同结果的表达式,在构建动态SQL时可以提供更简洁的写法。 - **示例**: ```sql SELECT * FROM table WHERE addDate = CASE WHEN @addDate IS NULL THEN addDate ELSE...

    收获不止SQL优化

    12.1.1 Case When改造 334 12.1.2 Rownum分页改写 337 12.1.3 Hint直接路径改造 338 12.1.4 只取你所需的列 339 12.1.5 避免或者减少递归调用 341 12.1.6 ROWID优化应用 347 12.2 设法避免外因影响 350 ...

    SQL 执行超长语句

    2. **数据清洗**:对于需要根据特定规则对数据进行清洗的应用场景,可能会使用到包含多个CASE WHEN语句的复杂SQL语句。 3. **报表生成**:生成复杂的报表时,往往需要从多个表中抽取数据并进行复杂的联接操作,从而...

    15个常用的SQL Server高级语法

    CASE...END 语句在SQL Server中提供了类似C#中的switch-case逻辑,允许根据不同的条件返回不同的值。例如,在用户等级分类中,可以根据level字段的值赋予不同的头衔: ```sql SELECT name, CASE level WHEN 1 ...

    Oracle SQLServer行列转换

    在Oracle中使用`CASE`语句的方式与SQLServer类似,但需要注意Oracle中`CASE`语句的写法有所不同。例如: ```sql SELECT StuNo AS '学号', MAX(CASE WHEN Subject = '语文' THEN Score ELSE 0 END) AS '语文', ...

Global site tag (gtag.js) - Google Analytics