美文网首页Java
十六个问题让你学会——子查询

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

作者: 可乐教编程 | 来源:发表于2020-05-23 19:33 被阅读0次

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

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';

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

相关文章

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

    -- - 按照性别分组,统计人数 SELECT (SELECT COUNT(*) AS man FROM stud...

  • SQL关联子查询

    简单易懂教你学会SQL关联子查询 初学SQL的人都会觉得SQL的关联子查询难以理解,为什么?这是有原因的。 关联子...

  • java_sql子查询

    子查询:select语句里面嵌套select语句 子查询出现的问题:select ..(select).from....

  • SQL Review: Simple SELECT Querie

    你做的很好!既然你已经学会了如何编写基础的查询,那么就要练习如何使用它来解决即使问题。 SELECT 查询SELE...

  • Oracle中with as的用法

    一 、with as 的含义WITH AS短语,也叫做子查询部分(subquery factoring),可以让你...

  • Oracel_子查询

    SQL子查询 子查询语法 子查询 (内查询) 在主查询之前一次执行完成。 子查询的结果被主查询(外查询)使用 。 ...

  • Oracle【tips2】

    1,不可以在group by后面使用子查询2,一般不在子查询排序;但top-n分析问题中,必须对子查询排序3, 一...

  • Oracle | 子查询和伪列

    1. 子查询 (1)单行子查询 (2)多行子查询 1)ANY子查询 2)ALL 子查询 2. 伪列...

  • 《SQL必知必会》第 11 课 使用子查询

    目标: 11.1 子查询 11.2 利用子查询进行过滤 11.3 作为计算字段使用子查询 11.1 子查询 查询(...

  • MySQL 子查询

    什么是子查询 为什么要使用子查询 子查询的分类 怎样使用子查询 关联子查询 要使用的数据表 1. 什么是子查询? ...

网友评论

    本文标题:十六个问题让你学会——子查询

    本文链接:https://www.haomeiwen.com/subject/lyblahtx.html