使用oracle中count(*)函数来计算总条数。
湘西土家族网站建设公司创新互联公司,湘西土家族网站设计制作,有大型网站制作公司丰富经验。已为湘西土家族1000+提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的湘西土家族做网站的公司定做!
语句:select count(*) from tablename;
如果是需要所有的表的话,必须先通过:”SELECT table_name FROM user_tables“语句查询出所有的表名,然后在进行条数计算。
select t.stuid,t.name,sum(t.score) from stuscore t group by t.stuid,t.name order by sum(t.score) desc;
把成绩列的值加起来就是总成绩,总成绩/成绩列数 就是平均成绩了嘛,但在求成绩列的时候要注意成绩为0的是否去除,可用sign。
比如:score
sno yy yw
123 90 0
145 97 60
select sno,yy,yw,yy+yw,(yy+yw)/(sign(yy)+sign(yw)) from score;
--建表
create table student_grade (NAME VARCHAR2(10) NOT NULL, subject VARCHAR2(10),grade NUMBER);
--插入数据
INSERT INTO student_grade VALUES('student1','CHINESE',80);
INSERT INTO student_grade VALUES('student1','MATH',70);
INSERT INTO student_grade VALUES('student1','ENGLISH',60);
INSERT INTO student_grade VALUES('student2','Chinese',90);
INSERT INTO student_grade VALUES('student2','MATH',80);
INSERT INTO student_grade VALUES('student2','ENGLISH',100);
--查询
SELECT AVG(grade) FROM student_grade GROUP BY subject;--查询各个科目平均成绩
SELECT AVG(grade) FROM student_grade GROUP BY NAME;--查询每个学生平均成绩
SELECT COUNT(NAME) AS "60-69" FROM student_grade WHERE grade BETWEEN 60 AND 69;
SELECT COUNT(NAME) AS "70-79" FROM student_grade WHERE grade BETWEEN 70 AND 79;
SELECT COUNT(NAME) AS "80-89" FROM student_grade WHERE grade BETWEEN 80 AND 89;
以test表中数据为例:
其中90分及以上为优秀,70分-89分为良好,60-69分为及格,60分以下为不及格,可用如下语句给出等级制成绩:
select name,
score,
case
when score = 90 then
'优秀'
when score between 70 and 89 then
'良好'
when score between 60 and 69 then
'及格'
when score 60 then
'不及格'
end 等级
from test;
查询结果:
这格式看得眼花缭乱啊。
从字段英文名猜测,你这是查每个学生的一个成绩吧。
select里面有sum,而且对应的还有学生名,而最后没有group分组。这儿肯定就有问题。
其他有没有问题,不好判断,而且不知道你的表结构,不知道怎么改你这SQL。
建议下次发SQL,先按语法把格式捋顺,这看得太费劲。