使用游标,统计 “会计” 学院男女生的人数。 解题思路: 利用游标存储“会计”学院学生的学号和性别 。依次从游标中取出每条记录,如果是男生则@n1+1:如采足女 生则@n2+1 。最后输出变量@n1和@n2即可
时间: 2024-05-16 19:15:19 浏览: 133
统计男女生人数
假设你的学生表中有以下字段:学号(stu_id)、院系(department)、性别(gender)。
首先,创建一个游标,筛选出院系为“会计”的学生:
```
DECLARE cur_student CURSOR FOR
SELECT stu_id, gender FROM student WHERE department = '会计';
```
然后,定义两个变量 @n1 和 @n2,分别表示男生和女生的人数,并将它们初始化为 0:
```
DECLARE @n1 INT = 0;
DECLARE @n2 INT = 0;
```
接下来,使用 WHILE 循环遍历游标中的每一条记录,判断性别并分别累加人数:
```
OPEN cur_student;
FETCH NEXT FROM cur_student INTO @stu_id, @gender;
WHILE @@FETCH_STATUS = 0
BEGIN
IF @gender = '男'
SET @n1 = @n1 + 1;
ELSE IF @gender = '女'
SET @n2 = @n2 + 1;
FETCH NEXT FROM cur_student INTO @stu_id, @gender;
END
CLOSE cur_student;
DEALLOCATE cur_student;
```
最后,输出变量 @n1 和 @n2,分别表示男生和女生的人数。
完整的 SQL 代码如下:
```
DECLARE cur_student CURSOR FOR
SELECT stu_id, gender FROM student WHERE department = '会计';
DECLARE @n1 INT = 0;
DECLARE @n2 INT = 0;
OPEN cur_student;
FETCH NEXT FROM cur_student INTO @stu_id, @gender;
WHILE @@FETCH_STATUS = 0
BEGIN
IF @gender = '男'
SET @n1 = @n1 + 1;
ELSE IF @gender = '女'
SET @n2 = @n2 + 1;
FETCH NEXT FROM cur_student INTO @stu_id, @gender;
END
CLOSE cur_student;
DEALLOCATE cur_student;
SELECT '男生人数:' + CAST(@n1 AS VARCHAR(10)) + ',女生人数:' + CAST(@n2 AS VARCHAR(10));
```
阅读全文