面对一个问题,何如分析SQL语句该怎么写?

来源:百度知道 编辑:UC知道 时间:2024/05/09 06:09:25
我是初学者,写SQL语句时往往没什么头绪,感觉写SQL句子都是冥思苦想挤出来得。这样感觉好慢···请问高手在面对一条查询语句时,是如何效率而清晰的分析问题的?
例子:为管理岗位业务培训信息,建立3个表:
S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄
C (C#,CN ) C#,CN 分别代表课程编号、课程名称
SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩

1. 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
二楼的答案利用了 where, group by, having 的先后执行驯顺。 请问你面对这个问题时,是怎么分析的?是怎么从问题然后过度到这个方法的?

select avg(学习成绩),s.sn
from S,(select count(*) num ,s# from SC where 学习成绩< 60 group by s# having num >=2) tmp
where S.s#=tmp.s#
group by s.sn

分析 1 (select count(*) num ,s# from SC where 学习成绩< 60 group by s# having num >=2) 找出挂两科的所有学生学号。
2 用学号就可以确定这些学生的成绩。再算平均值。

create table s(id int(10),name char(50),danwei char(50), age int(10));
create table c(bianma int(10), title int(10), );
create table sc(id int(10),bianhao int(10), chengji int(10));
、、、、、、

1.你的结果集是不是可以从表中的字段直接select出来.
2.如果不能,需要哪些计算,会用到什么样的计算函数,比如sum或者count
3.需要不需要逻辑判断,如:结果=1,显示男,否则显示女等等.
4.需要哪些表联查
5.联查条件是什么
6.如果你用到了聚合函数,那有没有在合适的位置加入group by
一般这些也就够了.
sql 二楼正解

首先分析要查询的是那些字段,然后分析查询条件,然后分析表之间关系。