首页 > 数据库 >Sql Server 编写函数

Sql Server 编写函数

时间:2023-03-20 14:33:12浏览次数:43  
标签:Degree int 样例 WHEN Server Sql SC 编写 SELECT

编写函数样例

样例一

编写函数Fmax,求二数大者。

CREATE FUNCTION Fmax  (@x int,@y int)
RETURNS int
AS
BEGIN
    DECLARE @Z INT
    IF @X>@Y 
        SET @Z=@X
    ELSE
        SET @Z=@Y
    RETURN(@Z)
END

SELECT DBO.fMAX(1,2)

样例二

编写函数Fc,参数为两个整数和一个运算符(+,-,*,/),计算其结果。

CREATE FUNCTION FC  (@x int,@y int,@C CHAR)
RETURNS int
AS
BEGIN
    DECLARE @Z INT
    SET  @Z = CASE @C
        WHEN '+' THEN @X+@Y
        WHEN '-' THEN @X-@Y
        WHEN '*' THEN @X*@Y
        WHEN '/' THEN @X/@Y
    END
RETURN(@Z)
END

SELECT DBO.fC(1,2,'+')

样例三

编写函数 Fsum 对自然数列 1 ~ n(参数)求和。

CREATE FUNCTION Fsum(@n INT)
RETURNS int AS
BEGIN
    DECLARE @sum INT, @i INT
    SET @sum = 0
    SET @i = 1
    WHILE @i <= @n
    BEGIN
        SET @sum = @sum + @i
        SET @i = 1 + @i
    END
    RETURN(@sum)
END

SELECT DBO.Fsum(100)

样例四

Student 表、Score 表和 Course 表中有如下一些数据。



编写函数 Fs,参数为姓名和课程名,返回该生该课程的成绩。

CREATE FUNCTION FS  (@xM NCHAR(4),@KCM VARCHAR(20))
RETURNS DECIMAL(4,1)
AS
BEGIN
    DECLARE @Z DECIMAL(4,1)
    SELECT @Z = DEGREE 
        FROM Student S 
        JOIN Score   SC ON SC.SNO=S.SNO
        JOIN Course  C  ON C.CNO=SC.CNO 
        WHERE SNAME = @XM AND CNAME = @KCM
    RETURN(@Z)
END

SELECT DBO.fS('李君帅',	'计算机导论')

样例五

编写函数 Fsc,参数为姓名,返回该生的所有成绩。

CREATE FUNCTION Fsc(@XM Nchar(4))
RETURNS TABLE
AS
RETURN (
    SELECT SNAME,CNAME,DEGREE 
    FROM Student S 
    JOIN Score   SC ON SC.SNO = S.SNO
    JOIN Course  C  ON C.CNO = SC.CNO 
    WHERE SNAME = @XM 
)

SELECT *  FROM DBO.Fsc('李君帅')

样例六

编写函数 FRANK,参数为学号,返回该生平均分班级排名。

CREATE FUNCTION FRANK(@sno char(3))
RETURNS int
AS
BEGIN
    DECLARE @rank INT
    DECLARE @class CHAR(5)
    SET @class = (SELECT class FROM Student WHERE Sno = @sno)

    SET @rank = (
        SELECT a_rank
        FROM (
            SELECT row_number() OVER(ORDER BY AVG(Degree) DESC) a_rank, S.Sno  
            FROM Score SC  
            JOIN  Student S ON S.Sno = SC.Sno 
            WHERE Class = @class
            GROUP BY s.sno
        ) T
        WHERE T.Sno = @sno
    )
    RETURN @rank
END

SELECT DBO.FRANK(101)

样例七

编写函数 FCJA,参数为姓名或姓名一部分,返回该生的所有课程的成绩(学号,姓名,课程名,成绩等级)。选修成绩等级 A:90~100 B:80~90 C: 70~80 D:60~70 E:<60。

CREATE FUNCTION FCJA(@sname nvarchar(4))
RETURNS TABLE AS
RETURN(
    SELECT SC.Sno, Sname, Cname, Degree,
    CASE
        WHEN Degree <  60                   THEN 'A'
        WHEN Degree >= 60 AND Degree < 70   THEN 'B'
        WHEN Degree >= 70 AND Degree < 80   THEN 'C'
        WHEN Degree >= 80 AND Degree < 90   THEN 'D'
        WHEN Degree >= 90 AND Degree <= 100 THEN 'E'
        ELSE 'N'
    END 等级
    FROM Score SC
    JOIN Student S ON SC.Sno = S.Sno
    JOIN Course C  ON C.Cno = SC.Cno
    WHERE Sname like '%'+ @sname +'%'
)

SELECT * FROM  FCJA('李君')

标签:Degree,int,样例,WHEN,Server,Sql,SC,编写,SELECT
From: https://www.cnblogs.com/qiang-1999/p/17236202.html

相关文章

  • mysql-connector-python驱动和django-mysql-pool连接池
    ##################### 为了设计一个公用的、安全的连接池接口,可以考虑以下几个方面:封装连接池初始化和获取连接的逻辑,使得调用者不需要了解连接池的具体实现细节,只需要调......
  • resources目录下的mapper写sql语句没有提示
    resources目录下的mapper写sql语句没有提示首先了解一下mybatix-config.xml连接mapper文件的三种方式:<!--第一种--><mapperresource="com/bbl/dao/UserMa......
  • Linux下MySQL安装
    MySQL安装过程下载官方包wget-i-chttp://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm成功信息:FINISHED--2023-03-2009:40:49--Totalwall......
  • Docker compose Mysql 8 sql_mode 配置及修改only_full_group_by docker sql_mode 'N
    mysql默认的配置sql_mode包含ONLY_FULL_GROUP_BY,我们要去掉,网上找了好多帖子,大多数copy来copy去,说的乱七八糟,很无奈,最后折腾了半天才搞定,主要是注意2点1、先明白你的mysq......
  • sqlplus: error while loading shared libraries: libsqlplus.so
    $sqlplus/assysdba报错如下:sqlplus:errorwhileloadingsharedlibraries:libsqlplus.so:cannotopensharedobjectfile:Nosuchfileordirectory(1)设置环境......
  • 【Hive进阶】-- Hive SQL、Spark SQL和 Hive on Spark SQL
    1.HiveSQL1.1基本介绍概念Hive由Facebook开发,用于解决海量结构化日志的数据统计,于2008年贡献给Apache基金会。Hive是基于Hadoop的数据仓库工具,可以将结构化数据映射为......
  • PostgreSQL temp table 全链路 实现原理
    文章目录​​背景​​​​使用​​​​实现​​​​创建表​​​​插入​​​​删除表​​背景表(table/relation)作为PostgreSQL数据库中最为常用的一种数据库对象,用户......
  • MySQL锁机制
        上文总结了MySQL的隔离级别,而隔离级别是通过锁机制实现的,所以针对锁机制展开详细描述。    首先介绍MySQL的锁可以分为:享/读/共享锁SharedLocks:针......
  • MySql前缀索引解析
    一、什么是前缀索引所谓前缀索引,说白了就是对文本的前几个字符建立索引(具体是几个字符在建立索引时去指定),比如以产品名称的前10位来建索引,这样建立起来的索引更小,查询效......
  • 【服务器数据恢复】服务器断电导致Xen Server虚拟机不可用的数据恢复案例
    服务器数据恢复环境:某公司一台DELL服务器,作为WEB服务器使用,安装的WindowsServer操作系统,配置了SQLServer数据库;采用了XenServer虚拟化系统;底层是通过raid卡,用4块STAT......