sqlserver选课人数统计 20C

7个回答

Course表中设置Student为外键，比如学生A选择课程1，那么Course表下就产生一条数据记录(学生A, ‘课程1’)；

（学生B，‘课程2’），（学生C，‘课程3’），（学生D，‘课程3’），
（学生E，‘课程4’），（学生F，‘课程5’），

Course
|- Student
|- CourseName

CREATE DEFINER=`root`@`localhost` PROCEDURE `countSoreP`()
BEGIN
declare less60 smallint default 0; /*x <= 60*/
declare b60a70 smallint default 0;
declare b70a80 smallint default 0;
declare b80a90 smallint default 0;
declare more90 smallint default 0;
declare countcno char(4) default '****';

``````SELECT cno
INTO countcno FROM course
WHERE cname = '离散数学';/*确定course表中有离散数学这门课*/

SELECT COUNT(*)
INTO less60 FROM sc
WHERE cno = '8' AND grade < 60;
SELECT COUNT(*)
INTO b60a70 FROM sc
WHERE cno = '8' AND grade >= 60 AND grade < 70;

SELECT COUNT(*)
INTO b70a80 FROM sc
WHERE cno = '8' AND grade >= 70 AND grade < 80;

SELECT COUNT(*)
INTO b80a90 FROM sc
WHERE cno = '8' AND grade >= 80 AND grade < 90;

SELECT COUNT(*)INTO more90 FROM sc
WHERE cno = '8' AND grade >= 90;
create table countScore( scorestage char(10), number smallint);
insert into countscore values('x<60', less60);
insert into countscore values('60<=x<70', b60a70);
insert into countscore values('70<=x<80', b70a80);
insert into countscore values('80<=x<90', b80a90);
insert into countscore values('x>=90', more90);
``````

END

-- exec Course '','课程1,课程2,课程3,课程4,课程5,课程6,课程7,课程8,课程9,课程10 '

alter proc Course
@StuNo nvarchar(50) , -- 学号，只统计人数可以不用
@CourseList nvarchar(1000) -- 选课字符串，逗号分隔 如 '课程1,课程2,课程3,课程4,课程5,课程6,课程7,课程8,课程9,课程10 '

as
begin

``````declare @CourseName nvarchar(50)

while len(@CourseList)>0
begin

if CHARINDEX(',',@CourseList)>0
begin
set @CourseName= SUBSTRING( @CourseList ,0 ,CHARINDEX(',',@CourseList))
update courseTable set num=num+1 where CourseName=@CourseName
set @CourseList= SUBSTRING( @CourseList ,CHARINDEX(',',@CourseList)+1,len(@CourseList))
end
else
begin
set @CourseName = @CourseList
update courseTable set num=num+1 where CourseName=@CourseName
set @CourseList=''
end
end
``````

end

/*

# 没有C币了，穷的很，按要求写了很久，希望采纳！！！！！

*/

--1.创建课程表，表名可以自己修改，编号自增列。

CREATE TABLE 课程
(

PRIMARY KEY ,

DEFAULT 0
);

--2.插入课程表数据

INSERT INTO dbo.课程
( 课程 )
VALUES ( '课程1' )
, ( '课程2' )
, ( '课程3' )
, ( '课程4' )
, ( '课程5' )
, ( '课程6' )
, ( '课程7' )
, ( '课程8' )
, ( '课程9' )
, ( '课程10' );

GO

--3.参入选课课程编号，并更新选课人数。

--参数设置为字符参，已英文逗号","分隔。如：1,2,5

--存储过程如下：
CREATE PROC usp_web_proc_updClass
(
@classIds VARCHAR(1000)
)
AS
BEGIN

``````    DECLARE @CurrentIndex INT;
DECLARE @NextIndex INT;
DECLARE @Separator CHAR(1)= ',';
DECLARE @ReturnText NVARCHAR(MAX);

DECLARE @classList TABLE ( classId INT );

SELECT  @CurrentIndex = 1;
WHILE ( @CurrentIndex <= LEN(@classIds) )
BEGIN
SELECT  @NextIndex = CHARINDEX(@Separator, @classIds,
@CurrentIndex);
IF ( @NextIndex = 0
OR @NextIndex IS NULL
)
SELECT  @NextIndex = LEN(@classIds) + 1;
SELECT  @ReturnText = SUBSTRING(@classIds, @CurrentIndex,
@NextIndex - @CurrentIndex);
INSERT  INTO @classList
( classId )
VALUES  ( @ReturnText );
SELECT  @CurrentIndex = @NextIndex + 1;
END;

--更新选课人数
UPDATE a
SET a.选课人数 = a.选课人数+1
FROM 课程 AS a
INNER JOIN @classList b ON a.编号 = b.classId

END;
``````

GO

--4.执行例子

EXEC dbo.usp_web_proc_updClass @classIds = '1,2,5' -- varchar(1000)

--5.查询结果

SELECT * FROM dbo.课程

create function dbo.f_split
(
@pSourceSql varchar(8000),
@pSeprateStr varchar(10) = ','
)

returns @temp table
(
id int identity(1,1),
)

with encryption
as

begin

declare @i int

``````  set @pSourceSql = rtrim(ltrim(@pSourceSql));

set @i = charindex(@pSeprateStr,@pSourceSql);

while(@i >= 1)
begin
insert @temp values(left(@pSourceSql,@i-1));

set @pSourceSql = substring(@pSourceSql,@i+1,len(@pSourceSql)-@i)
set @i = charindex(@pSeprateStr,@pSourceSql)
end

if(len(@pSourceSql) > 0)
begin
insert @temp values(@pSourceSql);
end;

return
``````

end

update table_name set num = num + 1 where id in (select col from f_split('1,2,3,5',','))

string t = "1,2,3,5";
var k = t.Split(',');
string strparams = "(";
foreach (string temp in k)
{
strparams += "'"+ temp+"',";
}
strparams.TrimEnd(',');
strparams = ")";

``````string strSql = "update table_name set num = num + 1 where id in " + strparams;
``````

1. 利用group by和case语句，从sc表获取所有学生的选课情况（这是一个殿下的行变列的过程）
2. 以1的查询结果作为子查询，利用sum计算各各个课程的报名数

sqlserver存储过程统计数据，“月份”字段如何统计

SqlServer，写存储过程用来按月统计一些数据。现在取出月份的值是用以下sql语句取出来的，但这种情况会使【Total Quotation Enquiries】某个月份为空时，整个Period的月份会乱掉。 “ select Period=case when isnull(a.month,'')='' then (case when isnull(b.month,'')='' then c.Month else b.Month end) else a.month end ” ![图片说明](https://img-ask.csdn.net/upload/201608/29/1472442458_321702.png) 请问是否有一种方式，可以动态地select出2015-06月份至今的所有月份，每个月动态变更月份

Navicat连接SqlServer数据库失败？

Sql server 数据select count请教

sql server COUNT问题 表如下（没有其他的地址表，每次选择统计的省份不一样，这次是浙江，广东，北京，江苏，湖南。下次可能是山东，陕西，山西，每次统计人数的省份可能不一样。就是只统计我想统计的省份，对应省分没人没有就默认为0）： id name address 1 张三 浙江 2 李四 广东 3 王五 北京 4 赵六 江苏 5 张甲 广东 现在我想统计（浙江，广东，北京，江苏，湖南）的人数，请问该如何实现？本来count groupby 可以实现表里有的人数，但是没有的该怎么去统计人数？有可能下次是统计山东，陕西，山西，甘肃。每次选择统计的省份不一样。结果如下： 省份 人数 浙江 1 广东 2 北京 1 江苏 1 湖南 0

Java和sql server2012连接问题

com.microsoft.sqlserver.jdbc.SQLServerException: 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。请验证连接属性。确保 SQL Server 的实例正在主机上运行，且在此端口接受 TCP/IP 连接，还要确保防火墙没有阻止到此端口的 TCP 连接。”。 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190) at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:241) at com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2243) at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:491) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1309) at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827) at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at pkg.Main.main(Main.java:19) 连接数据库失败 端口都已经设置好了，但是就是无法连接上，求助。

SQL SERVER 统计24小时内每小时添加的数据

SQL server 2008R2配置服务器下SQL server服务远程过程调用失败

win7系统，之前下过SQL server更高的版本，环境稍微有点变化就用不了，太糟心就卸了。 这次因为需要用sql,小心翼翼用Windows install clean up清理了一下，安装好后还是用不了。 打开配置管理器，SQL server 服务下只有远程过程调用失败。 各种查，试过找到的几种方法，比如删除Microsoft SQL server 2012 Express LocalDB。 可是我在装之前把所有和SQL有关的东西都删了，不管是2012还是2014或者2016， 都找不到LocalDB这种文件。 实在找不到问题在哪了，但是我又急需SQL,心好累……TAT…… 有大佬能帮帮我吗？

SQL Server2012安装问题

sqlserver 事务 sqlserver 事务sqlserver 事务

mybatis如何通过jdbc连接sqlserver数据库

jdbc连接SQL server连不上

com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host 127.0.0.1, port 1433 has failed. Error: Connection refused: connect. Please verify the connection properties and check that a SQL Server instance is running on the host and accepting TCP/IP connections at the port, and that no firewall is blocking TCP connections to the port. at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:130) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1195) at com.microsoft.sqlserver.jdbc.SQLServerConnection.loginWithoutFailover(SQLServerConnection.java:1054) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:758) at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842) at java.sql.DriverManager.getConnection(DriverManager.java:664) at java.sql.DriverManager.getConnection(DriverManager.java:247) at javaapplication3.JavaApplication3.JDBCon(JavaApplication3.java:27) at javaapplication3.JavaApplication3.main(JavaApplication3.java:18)![图片](https://img-ask.csdn.net/upload/201711/15/1510751615_503674.jpg)

sql server统计一个字段出现的次数的问题

JDBC连接SQL Server数据库

SQL server 连接 参数 求解

configuration.setProperty("DBDriver", "com.microsoft.sqlserver.jdbc.SQLServerDriver"); configuration.setProperty("DBUrl", "jdbc:sqlserver://localhost:1433;databaseName=Robot"); configuration.setProperty("DBUsername", "sa"); configuration.setProperty("DBPassword", "1234"); 我电脑刚安装的SQL server2014 服务器名称是mengxianqian 登录名是sa 创建的数据库Robot 怎么连接

Sql Server2016连接失败

sql server无法连接服务器，sql server网络配置里面没有任何协议

SQLServer 中如何按一定间隔时间分组统计时间段内出现次数

import java.sql.*; public class SMS { public static void main(String args[]){ try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection ct=null; ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=StudentManager", "ss","123"); System.out.println("connected"); } catch (ClassNotFoundException e) { e.printStackTrace(); System.out.println("unconnected1"); } catch (SQLException e) { e.printStackTrace(); System.out.println("unconnected2"); } } } com.microsoft.sqlserver.jdbc.SQLServerException: 用户 'ss' 登录失败。 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source) at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(Unknown Source) at com.microsoft.sqlserver.jdbc.TDSParser.parse(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerConnection.access\$000(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerConnection\$LogonCommand.doExecute(Unknown Source) at com.microsoft.sqlserver.jdbc.TDSCommand.execute(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerConnection.loginWithoutFailover(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source) at java.sql.DriverManager.getConnection(DriverManager.java:664) at java.sql.DriverManager.getConnection(DriverManager.java:247) at SMS.main(SMS.java:9) unconnected2

“亚马逊丛林里的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统中微小参数的变化所引起的系统极大变化。 而在更长的时间尺度内，我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于时间与技艺的蝴蝶效应 公元前3000年，古埃及人将尼罗河中挖出的泥浆与纳特龙盐湖中的矿物盐混合，再掺入煅烧石灰石制成的石灰，由此得来了人...

loonggg读完需要3分钟速读仅需 1 分钟大家好，我是你们的校长。我之前讲过，这年头，只要肯动脑，肯行动，程序员凭借自己的技术，赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

MySQL数据库面试题（2020最新版）

HashMap底层实现原理，红黑树，B+树，B树的结构原理 Spring的AOP和IOC是什么？它们常见的使用场景有哪些？Spring事务，事务的属性，传播行为，数据库隔离级别 Spring和SpringMVC，MyBatis以及SpringBoot的注解分别有哪些？SpringMVC的工作原理，SpringBoot框架的优点，MyBatis框架的优点 SpringCould组件有哪些，他们...

《经典算法案例》01-08：如何使用质数设计扫雷（Minesweeper）游戏

《Oracle Java SE编程自学与面试指南》最佳学习路线图（2020最新版）