‘壹’ 用一条sql语句 查询出每门课都大于80分的学生姓名
select name form 表名 a where a.kecheng='语文' and a.fenshu>80 and exists (select * from 表名 b where b.name=a.name and b.kecheng='数学' and b.fenshu>80 )试一下
‘贰’ 怎么用SQL语句查询每门成绩都大于80的学生姓名
select name from stu group by name having min(fs)>=80。
‘叁’ 用一条sql语句查询出每门课都大于80分的学生姓名
请给出具体的表格式和列名称。
没有具体表,不同人设计的表结构不同,查询语句也不同。
例:
表名称为grade,结构如下
id 姓名 数学 语文
1 张三 30 20
2 李四 80 90
3 王五 90 70
查询语句为
select * from grade where 数学>80 and 语文>80
‘肆’ 如何在SQL server中查询成绩大于80的学生记录集
HAVING语句通常与GROUP BY语句联合使用,用来过滤由GROUP BY语句返回的记录集。
HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足。
语法:
SELECT column1, column2, ... column_n, aggregate_function (expression)
FROM tables
WHERE predicates
GROUP BY column1, column2, ... column_n
HAVING condition1 ... condition_n;
同样使用本文中的学生表格,如果想查询平均分高于80分的学生记录可以这样写:
SELECT id, COUNT(course) as numcourse, AVG(score) as avgscore
FROM student
GROUP BY id
HAVING AVG(score)>=80;
在这里,如果用WHERE代替HAVING就会出错。
数据操纵
数据操纵语言是完成数据操作的命令,一般分为两种类型的数据操纵。
1、数据检索(常称为查询):寻找所需的具体数据。
2、数据修改:插入、删除和更新数据。
数据操纵语言一般由 INSERT(插入)、 DELETE(删除)、 UPDATE(更新)、 SELECT(检索,又称查询)等组成。由于 SELECT经常使用,所以一般将它称为查询(检索)语言并单独出现。
‘伍’ 1、 用一条SQL语句 查询出每门课都大于80分的学生姓名
selcet name,count(*)
from A
where fenshu>=80
group by name
Having count(*)=3
count是统计记录个数
group by是将此表的姓名一栏分组。
having就是集合函数了。
‘陆’ 用一条sql语句查询出“每门”课程都大于80分的学生姓名
首先需要进行分析:
要查询出每门课程都大于80分的学生姓名,因为一个学生有多门课程,所以会出现下面三种情况。
第一可能所有课程都大于80分。
第二可能有些课程大于80分,另外一些课程少于80分。
第三也可能所有课程都小于80分。
那么我们要查找出所有大于80分的课程的学生姓名,我们可以反向思考,找出课程小于80分(可以找出有一些课程小于80分,所有课程小于80分的学生)的学生姓名再排除这些学生剩余的就是所有课程都大于80分的学生姓名了。
分析完成后,进入数据图形化管理界面创建表并插入数据
--创建表aa
create table aa(
name varchar(10),
kecheng varchar(10),
fengshu int
)
--插入数据到表aa中
insert into aa values('张三','语文',81)
insert into aa values('张三','数学',75)
insert into aa values('李四','语文',76)
insert into aa values('李四','数学',90)
insert into aa values('王五','语文',81)
insert into aa values('王五','数学',100)
insert into aa values('王五','英语',90)
用一条SQL语句查询出每门课都大于80分的学生姓名
select distinct name from aa where name not in (select distinct name from aa where fengshu<=80)
结果如下图:
(6)sql至少有四门成绩大于80扩展阅读:
除了用distinct还可以用not in 或者 not exists 实现
//not in
SELECT DISTINCT A.name FROM Student A WHERE A.name not in(SELECT Distinct S.name FROM Student S WHERE S.score <80);
//not exists
SELECT DISTINCT A.name From Student A where not exists (SELECT 1 From Student S Where S.score <80 AND S.name =A.name);
结果与前面正文一样。
‘柒’ 怎么用SQL语句查询每门成绩都大于80的学生姓名
select
name
from
stu
group
by
name
having
min(fs)>=80。
还有这些简单语句。
简单基本的sql语句
更新:update
table1
set
field1=value1
where
范围
查找:select
*
from
table1
where
field1
like
’%value1%’
(所有包含‘value1’这个模式的字符串)
排序:select
*
from
table1
order
by
field1,field2
[desc]
求和:select
sum(field1)
as
sumvalue
from
table1
平均:select
avg(field1)
as
avgvalue
from
table1
最大:select
max(field1)
as
maxvalue
from
table1
最小:select
min(field1)
as
minvalue
from
table1[separator]
‘捌’ 用T-sql语句写出 查询出平均分大于80分,且至少两门课大于80的学生。 表如下:
稍微简化一下:
SELECT NAME,
SUM(CASE WHEN MAJOR = '数学' THEN SCORE ELSE 0 END)数学 ,
SUM(CASE WHEN MAJOR = '外语' THEN SCORE ELSE 0 END)外语 ,
SUM(CASE WHEN MAJOR = '语文' THEN SCORE ELSE 0 END)语文 ,
AVG(SCORE)
FROM STUDENT GROUP BY NAME
having SUM(CASE WHEN SCORE > 80 THEN 1 ELSE 0 END) >= 2
AND AVG(SCORE) >80
‘玖’ sql语句在学生表中查询4号同学成绩高于80分的课程号
原来多表联合查询还可以用列与列之间进行比较。联合百查询后,在where用选度课表的成绩列 大于 选课表平均成绩。
student为学生问表,答class为课程表,selectclass为选课关系表。
select * from selectclass as t1,
(select avg(sc.classreult)as pingjun,sc.classID from selectclass as sc group by classid )as t2
where t1.classID=t2.classID and t1.classReult>t2.pingjun