数据库实验4

Q1.stu_id=20127007,find name, gender and birthday

SELECT 
  a.stu_name,
  a.stu_gender,
  a.stu_birthday
FROM t_student a
WHERE a.stu_id='20127007'

Q2.cls_id=会计1201 find student’s id&name

select
  a.stu_id,
  a.stu_name
from t_student a
inner join t_class b 
  on a.cls_id=b.cls_id
where b.cls_name='会计1201'

Q3. subject=‘会计’&grade=2012,find classes with student’s count

class="sql">SELECT
  a.cls_name,
  COUNT(*) students
FROM t_class a
INNER JOIN t_student b ON a.cls_id=b.cls_id
WHERE 
  a.subject='会计' 
  AND a.grade=2012
GROUP BY 
  a.cls_name

Q4. stu_id=20127007,find all failured course.

SELECT
   b.course_name
FROM t_mark a
INNER JOIN t_course b ON a.course_id=b.course_id
WHERE 
  a.stu_id='20127007'
  AND 
  a.scroll<60
GROUP BY b.course_name

two:

SELECT
   DISTINCT b.course_name
FROM t_mark a
INNER JOIN t_course b ON a.course_id=b.course_id
WHERE 
  a.stu_id='20127007'
  AND 
  a.scroll<60

Q5 Add a course, course_id=17317, course_name=‘DBFoundation’&course_credit=3.5

INSERT INTO t_course
(course_id, course_name, course_credit)
values
(17317,'DB Foundation',3.5)

Q6. ‘会计’,2012,‘英语[1]’; 平均分

SELECT
 AVG(c.scroll)
FROM t_class a
INNER JOIN t_student b 
  ON a.cls_id=b.cls_id
INNER JOIN t_mark c 
  ON c.stu_id=b.stu_id
INNER JOIN t_course d 
  ON d.course_id=c.course_id
WHERE 
  a.subject='会计' 
  AND 
  a.grade=2012 
  AND 
  d.course_name='英语[1]'

Q7. 会计, 2012,‘英语[1]’,failure students
One:

SELECT
  DISTINCT b.stu_name
FROM t_class a
INNER JOIN t_student b 
  ON a.cls_id=b.cls_id
INNER JOIN t_mark c 
  ON c.stu_id=b.stu_id
INNER JOIN t_course d 
  ON d.course_id=c.course_id
WHERE 
  a.subject='会计' 
  AND 
  a.grade=2012 
  AND 
  d.course_name='英语[1]'
  AND
  c.scroll<60

Two:利用存在函数

SELECT
  a.stu_id,
  a.stu_name
FROM t_student a
INNER JOIN t_class b 
  ON b.cls_id=a.cls_id
WHERE
  b.subject='会计'
  AND 
  b.grade=2012
  AND
  EXISTS(
    SELECT 1 
     FROM t_mark c
    INNER JOIN t_course d 
       ON d.course_id=c.course_id
    WHERE 
       c.stu_id=a.stu_id
      AND 
      c.scroll<60
      AND 
      d.course_name='英语[1]'
    )

Q8 查询挂科数大于五科的学生

SELECT
  a.stu_id,
  a.stu_name,
  COUNT(DISTINCT c.course_id)

FROM t_student a
INNER JOIN t_class b ON b.cls_id=a.cls_id
INNER JOIN t_mark c ON c.stu_id=a.stu_id
INNER JOIN t_course d ON d.course_id=c.course_id
WHERE 
  b.subject='会计' 
  AND 
  b.grade=2012
  AND
  c.scroll<60
GROUP BY a.stu_id,a.stu_name
HAVING COUNT(DISTINCT c.course_id)>=5
SELECT
  a.stu_id,
  a.stu_name
FROM t_student a
INNER JOIN t_class b ON b.cls_id=a.cls_id
INNER JOIN t_mark c ON c.stu_id=a.stu_id
INNER JOIN t_course d ON d.course_id=c.course_id
WHERE 
  b.subject='会计' 
  AND 
  b.grade=2012
  AND
  c.scroll<60
GROUP BY a.stu_id,a.stu_name
HAVING COUNT(*)-COUNT(DISTINCT c.course_id)>=1

猜你喜欢

转载自blog.csdn.net/qq_40247103/article/details/85032409