首页 > 其他分享 >常用函数:其他类型函数

常用函数:其他类型函数

时间:2024-07-07 09:30:59浏览次数:16  
标签:常用 函数 -- value t1 score 类型 id select

1、聚合函数:group_concat

  • 功能:用于在分组时,将指定字段的值进行合并拼接成一个字符串

  • 场景:分组聚合、行列转换

  • 语法:

  • group_concat(  [distinct] col [order by col] [separator 分隔符]  )
    
    distinct:对元素的值进行去重
    order by:按照某一列的值进行排序
    separator:用于指定分隔符,不给默认为逗号作为分隔符
  • 示例:

  • -- 查询所有学生的个人信息和考试科目,将考试科目合并为一列
    with t1 as(
    select s_id, group_concat(c_name) as l_name
    from score
    join Course C on Score.c_id = C.c_id
    group by s_id)
    select *
    from student
    join t1 on Student.s_id = t1.s_id
    ;

2、逻辑判断函数:case when

  • 功能:基于不同的条件,返回不同的结果

  • 场景:如果 A 则 B,如果 C 则 D ……,多条件的判断场景

  • 语法:

  • -- 语法1:单列等值判断
    case col when v1 then r1
    	     when v2 then r2
    	     ……
    	     else rn
    end
    
    -- 语法2:任意条件判断
    case when 条件1 then r1
    	 when 条件2 then r2
    	 ……
    	 eles rn
    end
  • 示例:

  • -- 使用分段[100-85],[85-70],[70-60],[<60]来统计各科成绩,分别统计各分数段人数:课程ID和课程名称
    SELECT
    	course.c_name,
    	p.* 
    FROM
    	course
    	JOIN (
    SELECT
    	t.c_id,
    	SUM( IF ( t.LEVEL = 'level1', 1, 0 ) ) '[100-85]',
    	SUM( IF ( t.LEVEL = 'level2', 1, 0 ) ) '[85-70]',
    	SUM( IF ( t.LEVEL = 'level3', 1, 0 ) ) '[70-60]',
    	SUM( IF ( t.LEVEL = 'level4', 1, 0 ) ) '[<60]',
    	COUNT( t.s_id ) sumstu 
    FROM
    	(
    SELECT
    	c_id,
    	s_id,
    	s_score,
    CASE
    	
    	WHEN s_score BETWEEN 85 
    	AND 100 THEN
    	'level1' 
    WHEN s_score BETWEEN 70 
    AND 85 THEN
    'level2' 
    WHEN s_score BETWEEN 60 
    AND 70 THEN
    'level3' ELSE 'level4' 
    END LEVEL 
    FROM
    	score 
    	) t 
    GROUP BY
    	t.c_id 
    ) p ON course.c_id = p.c_id
    

3、其他判断函数if、ifnull、coalesce

  • if

    • 功能:用于实现条件判断,基于条件判断的结果返回不同的值,用于单条件场景

    • 语法:if(判断条件,条件成立返回的结果,条件不成立返回的结果)

    • 示例1:

    • -- 对成绩表,如果成绩大于等于60分显示通过,否则显示未通过
      select *,
             if(s_score>=60,'通过','未通过') as is_pass
      from score;
    • 示例2:多条件嵌套查询

    • -- 对于成绩表,如果成绩>=60为及格,中等为:70-80,优良为:80-90,优秀为:>=90
      
      select *,
             if(s_score<60,'不合格',if(s_score<70,'及格',if(s_score<80,'中等',if(s_score<90,'良好','优秀')))) as sc
      from score;
  • ifnull

    • 功能:用于判断第一个参数是否为null,如果为null则返回第二个参数,如果不为null则返回第一个参数【返回参数中第一个不为null的值】

    • 语法:ifnull(参数1,参数2)

    • 示例:

    • -- 查询平均成绩小于60分的学生的学号和平均成绩,考虑没参加考试的情况
      SELECT
      	t.id,
      	AVG( t.score ) avgscore 
      FROM
      	(
      SELECT
      	st.s_id id,
      	IFNULL( sc.s_score, 0 ) score 
      FROM
      	student st
      	LEFT JOIN score sc ON st.s_id = sc.s_id 
      	) t 
      GROUP BY
      	t.id 
      HAVING
      	avgscore < 60
      
    • coalesce

      • 功能:返回参数列表中第一个非空的值

      • 语法:coalesce(参数1,参数2,参数3……参数N)

      • 示例:

      • 预处理:

      • -- 先查询出所有学生的姓名、考试科目和成绩,如果该学生没有考试该科目,则使用null值
        with t1 as (
            select distinct s_id
            from score
        )
        select t1.s_id,
               c_name,
               s_score
        from t1
        join course
        left join score s on t1.s_id = s.s_id and Course.c_id = s.c_id
        ;
      • 使用coalesce

      • -- 对上述查询结果进行处理,如果成绩为null值,则使用数字0填充
        with t2 as (
        with t1 as (
            select distinct s_id
            from score
        )
        select t1.s_id as sid,
               c_name as cname,
               s_score as sscore
        from t1
        join course
        left join score s on t1.s_id = s.s_id and Course.c_id = s.c_id
        )
        select sid,
               cname,
               coalesce(sscore,0) as ssscore
        from t2
        ;

4、类型转换函数:cast

  • cast

    • 功能:将某一数据的类型进行转换

    • 语法:cast( 列 as 新的类型)

    • 示例:

    • select cast('5' as UNSIGNED) - 1;
      select '5' - 1;
      select cast('2023-01-01 15:31:27' as date );
      select cast('2023-01-01 15:31:27' as time );
      select cast('2023-01-01' as datetime);
valuedescribe
DATE将value转换成'YYYY-MM-DD'格式
DATETIME将value转换成'YYYY-MM-DD HH: MM: SS'格式
TIME将value转换成'HH: MM: SS'格式
CHAR将value转换成CHAR(固定长度的字符串)格式

SIGNED       

将value转换成INT(有符号的整数)格式
UNSIGNED将value转换成INT(无符号的整数)格式
DECIMAL将value转换成FLOAT(浮点数)格式
BINARY将value转换成二进制格式

标签:常用,函数,--,value,t1,score,类型,id,select
From: https://blog.csdn.net/qq_45269163/article/details/140208081

相关文章

  • 06.函数
    Go语言中的函数是代码组织和复用的基础,函数的定义和调用非常简单明了。下面是Go语言中函数的基础语法和一些关键概念:函数的定义在Go语言中,函数的定义包括函数名、参数列表、返回值类型和函数体。语法格式如下:func函数名(参数列表)返回值类型{函数体} 示......
  • 快速排序的思路及核心函数
    Quick_Sort###思想选取数组段内的任意一个值$x$(可以是左边界值`a[r]`,右边界值`a[l]`,中间值`a[(l+r+1)/2]`)。进行排序,在数组段内,将比$x$小的数都放在$x$的左边,比$x$大的数都放在$x$的右边(双指针)。不断递归处理数组段的左右两段,使得任意一个数的左边都比它小,右边......
  • 数组的键值操作函数学习
    <?php$url='http://chlop.io?www=23233s&timestamp=23232';//&timesXecho'<hr>';echoparse_url($url)['query'];echo'<hr>';echohtmlspecialchars(parse_url($url)['query']);echo......
  • 力扣第7题:整数反转 字符串函数综合运用(C++)
    给你一个32位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过32位的有符号整数的范围 [−231, 231 −1] ,就返回0。假设环境不允许存储64位整数(有符号或无符号)。示例1:输入:x=123输出:321示例2:输入:x=-123输出:-321示例3:......
  • python速通(函数)
    (网页的生成)牛客网的某个网页基本已经写好了,最后一步为了适应手机的尺寸,需要将高度增加一倍。为了适用于多个网页,牛牛希望你能将这个功能定义为一个函数,函数输入网页高度h,输出增加后的结果。defiheight(h):returnh*2h1,h2=map(int,input().split())print(iheight......
  • C++初学者指南-3.自定义类型(第一部分)-异常
    C++初学者指南-3.自定义类型(第一部分)-异常文章目录C++初学者指南-3.自定义类型(第一部分)-异常简介什么是异常?第一个示例用途:报告违反规则的行为异常的替代方案标准库异常处理问题和保证资源泄露使用RAII避免内存泄漏!析构函数:不要让异常逃脱!异常保证无抛出异常保......
  • 设计一个表示学生的类:Student,该类的属性包括name(姓名)、age(年龄)、scores(成绩,包括语文、
    #设计一个表示学生的类:Student,该类的属性包括name(姓名)、age(年龄)、scores(成绩,包括语文、数学和英语三科成绩,每科成绩的类型为整数),此外该类还有三个方法。#(1)获取学生姓名的方法:get_name(),返回类型为int。#(2)获取学生年龄的方法:get_age(),返回类型为int。#(3)获取三门......
  • Linux常用面试题
    系统部分1、在linux系统中,获取命令帮助的方法有哪些?   man(查看手册页)    help(查看内部命令)   --help(查看外部命令)2、列举find命令的用法?(主要说明使用的选项及其含义)   find查找文件或目录      -name   根据目标的名称进程查找,允许使......
  • sizeof 在函数使用中的问题
    使用sizeof来获取数组的大小在某些情况下是可以的,但在涉及到函数参数时可能会有一些问题。使用sizeof获取数组大小当数组在当前作用域内声明时,可以使用sizeof来获取数组的大小。例如:#include<cstdio>intmain(){charbuffer[10];printf("Sizeofb......
  • STM32封装ESP8266一键配置函数:实现AP模式和STA模式切换、服务器与客户端创建
    鱼弦:公众号【红尘灯塔】,CSDN博客专家、内容合伙人、新星导师、全栈领域优质创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen)STM32封装ESP8266一键配置函数:实现AP模式和STA模式切换、服务器与客户端创建......