玖叶教程网

前端编程开发入门

十六个问题让你学会——子查询

-- - 按照性别分组,统计人数

SELECT (SELECT COUNT(*) AS man FROM student WHERE sex='1') AS man,

(SELECT COUNT(*) AS woman FROM student WHERE sex='0') AS woman

FROM student

-- 按照地区分组,统计平均零花钱,只统计男同学的

SELECT addr,AVG(gold) FROM student WHERE sex='1' GROUP BY addr

-- - 按照地区分组,统计人数,只要看到人数超过3个的地区

SELECT addr,COUNT(*) FROM student GROUP BY addr ORDER BY COUNT(*)>3

-- - 查询娄底地区的学生的成绩,展示姓名和成绩

SELECT student.name,score FROM student

INNER JOIN score

ON student.`stuid`=score.`stuid`

WHERE addr='娄底'

-- - 查询女同学的成绩以及其他信息,展示姓名,年龄,地区,成绩

SELECT score,NAME,age,addr FROM student

INNER JOIN score

ON

student.`stuid`=score.`stuid`

WHERE sex='0'

-- - 查询有java成绩的同学的信息,展示姓名和成绩

SELECT NAME,score FROM student INNER JOIN score

ON student.`stuid`=score.`stuid`

WHERE className='java'

SELECT st.name,st.`stuid`,zf

FROM

(SELECT stuid,NAME FROM student) AS st

INNER JOIN

(SELECT stuid,SUM(score)AS zf FROM score

GROUP BY stuid) AS sc

ON st.`stuid` =sc.`stuid`

-- - 查询既有java也有c#成绩的同学,展示学生id

SELECT stuid FROM score

UNION

SELECT stuid FROM score WHERE className='java'

UNION

SELECT stuid FROM score WHERE className='C#'

-- - 查询年龄最大的同学的信息,展示姓名和地区

SELECT NAME,age FROM student WHERE age=(SELECT MAX(age) FROM student)

-- - 查询java成绩最高的同学的信息,展示姓名和电话

SELECT NAME,phone,MAX(score) FROM score

INNER JOIN student ON student.`stuid`=score.`stuid`

WHERE className='java'

SELECT NAME,phone FROM student INNER JOIN

(SELECT MAX(score) FROM score WHERE className='java') AS score

ON student.`stuid`=score.`stuid`

-- - 查新平均分最高的同学的零花钱,展示姓名和零花钱

SELECT NAME,gold FROM student INNER JOIN (SELECT AVG(score) FROM score) AS sc

ON student.`stuid`=score.`stuid`

v

-- - 查询所有男同学,再从男同学中查询年龄大于red'17岁的同学,展示姓名和年龄

SELECT NAME,age FROM student WHERE sex='1' AND age>17

-- - 查询所有同学的平均分和总分,展示姓名和平均分,总分

SELECT NAME,AVG(score),SUM(score) FROM score

INNER JOIN student

ON

score.`stuid`=student.`stuid`

-- - 查询出生日期在2000-05-05到2000-09-09之间的同学,展示姓名和出生日期

SELECT NAME,birth FROM student WHERE birth BETWEEN '2010-05-05' AND '2010-09-09';

-- - 查询java成绩为99的同学的学生信息,展示姓名和电话

SELECT NAME,phone

FROM student

INNER JOIN score

ON student.`stuid`=score.`stuid`

WHERE className=

(

SELECT className FROM score WHERE score=99

);

-- - 对每个同学的成绩数量进行统计,展示姓名和成绩个数

SELECT NAME,gs FROM student s INNER JOIN

(

SELECT stuid,COUNT(*) AS gs FROM score GROUP BY stuid

) a

ON s.`stuid`=a.stuid;


-- - 删除出生年月早的学生信息-

SELECT MAX(birth) FROM student;

DELETE FROM student WHERE birth = '2010-09-21';


你学会了吗?有问题可以私聊小编~

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言