drop table #tb1
create table #tb1
(
zhuanye varchar(50),
dengji varchar(50),
psum int,
savg float
)
insert #tb1 (zhuanye,dengji,psum,savg)
select distinct (case when left(banji.bjname,3)='计算机' then '计算机'
else '厨师'
end) zy,
(case when chengji.cj<60 then '不及格'
when chengji.cj<70 and chengji.cj>=60 then '及格'
when chengji.cj<90 and chengji.cj>=70 then '良好'
else '优秀' end) dj,
count(bjxs.xsid) rs,
[u]sum(chengji.cj)/count(bjxs.xsid) pjf[/u]
from banji
join bjxs on banji.bjid=bjxs.bjid
join xuesheng on xuesheng.xsid=bjxs.xsid
join chengji on chengji.xsid=bjxs.xsid
group by (case when left(banji.bjname,3)='计算机' then '计算机'
else '厨师'
end),(case when chengji.cj<60 then '不及格'
when chengji.cj<70 and chengji.cj>=60 then '及格'
when chengji.cj<90 and chengji.cj>=70 then '良好'
else '优秀' end)
select * from #tb1
上面的红线地方的数据在数据量很大的情况下,会出现数据有误么?该怎么处理
create table #tb1
(
zhuanye varchar(50),
dengji varchar(50),
psum int,
savg float
)
insert #tb1 (zhuanye,dengji,psum,savg)
select distinct (case when left(banji.bjname,3)='计算机' then '计算机'
else '厨师'
end) zy,
(case when chengji.cj<60 then '不及格'
when chengji.cj<70 and chengji.cj>=60 then '及格'
when chengji.cj<90 and chengji.cj>=70 then '良好'
else '优秀' end) dj,
count(bjxs.xsid) rs,
[u]sum(chengji.cj)/count(bjxs.xsid) pjf[/u]
from banji
join bjxs on banji.bjid=bjxs.bjid
join xuesheng on xuesheng.xsid=bjxs.xsid
join chengji on chengji.xsid=bjxs.xsid
group by (case when left(banji.bjname,3)='计算机' then '计算机'
else '厨师'
end),(case when chengji.cj<60 then '不及格'
when chengji.cj<70 and chengji.cj>=60 then '及格'
when chengji.cj<90 and chengji.cj>=70 then '良好'
else '优秀' end)
select * from #tb1
上面的红线地方的数据在数据量很大的情况下,会出现数据有误么?该怎么处理
解决方案 »
- ms_sql_server和mysql的区别是什么呢
- 求助:新建了一个数据库,但只有.mdf一个文件
- MSADO中调用同时存在Update语句和Select语句的问题
- 怎么把SQL服务器名改掉?
- MsSqlServer2000备份数据库到其它机器上的问题,有联网的两台W2K服务器A、B。A服务器上装有MsSqlServer2000,A、B服务器都以各自Administ
- 这条SQL如何改?
- sqlserver 2000怪异问题
- like走不走索引
- Sql Server 中奇怪的问题???注释也能被编译。。。
- 请问怎么转换某一列的格式?
- 菜鸟一枚,请各位高手帮个忙,求解
- 怎么让SQL SERVER 2008 R2系统 不区分大小写
有可能出现问题,因为count返回的是int,也就是整型数据,如果超出范围会报错,你可以把count,换为:COUNT_BIG(bjxs.xsid)
可行么? sql该怎么改的
可行么? sql该怎么改的没必要临时表这么复杂的。一般的计算,count也没问题,除非,count处理的数据是百亿条,才有可能报错,
--10亿
select POWER(10,9)
/*
1000000000
*/
--100亿,报错
select POWER(10,10)
/*
消息 232,级别 16,状态 3,第 7 行
类型 int 发生算术溢出错误,值 = 10000000000.000000。
*/下面的,转化10为bigint:--结果是1000万亿,也没报错
select SUM(POWER(cast(10 as bigint),15)) / count(power(cast(10 as bigint),15))
------
逻辑正确的语句,正确与否和数据量无关。如果有误,说明join的逻辑有问题。