设为首页 加入收藏

TOP

简单的学生各科成绩展示sql
2014-11-23 22:20:45 来源: 作者: 【 】 浏览:7
Tags:简单 学生 各科 成绩 展示 sql

最近回忆起以前的一道面试题,是关于学生成绩查询的,应该比较经典,特此贴出来供大家学习。

条件:三张表,学生表student,科目表course,成绩表results

表结构

学生表

-- Create table
create table STUDENT
(
  sid  VARCHAR2(10) not null,
  name VARCHAR2(10),
  sex  VARCHAR2(2),
  age  NUMBER(2)
)
科目表
create table COURSE
(
  c_id   VARCHAR2(10) not null,
  c_name VARCHAR2(20) not null
)
成绩表
-- Create table
create table RESULTS
(
  r_id  VARCHAR2(10) not null,
  s_id  VARCHAR2(10) not null,
  c_id  VARCHAR2(10) not null,
  score NUMBER(3) default 0
)
要求显示效果

\

sql语句:

SELECT s.sid,s.name,
SUM(CASE c.c_name WHEN '语文' THEN r.score END )  AS "语文",
SUM(CASE c.c_name WHEN '数学' THEN r.score END )  AS "数学",
SUM(CASE c.c_name WHEN '英语' THEN r.score END )  AS "英语"
 FROM student s,course c,results r WHERE s.sid = r.s_id AND c.c_id = r.c_id GROUP BY s.sid,s.name

在附送一个:

同时查出 语文分数>85分 以上的男生人数和女生人数

\

SELECT 
sum(CASE s.sex WHEN '男' THEN COUNT(s.sex) END ) AS "男生数量",
sum(CASE s.sex WHEN '女' THEN COUNT(s.sex) END ) AS "女生数量"
 FROM  student s,course c,results r WHERE s.sid = r.s_id AND c.c_id = r.c_id AND c.c_name='语文' AND r.score > 85 
 GROUP BY c.c_name,s.sex
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇那些年我们装过的数据库---盘点sq.. 下一篇sqlserver使用xp_cmdshell动态创..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: