求一SQL.
select case when a/b>0.5 then 1 else 0 end from orderlist group by code
我想统计出a/b大于50% 的数据.(其中的a,b是orderlist 的两个字段)
如果按我那样写,只能统计出当a/b=1时候满足,其余结果均不满足.
请帮忙...
问题点数:20、回复次数:6Top
1 楼myflok(老虎爱吃肉)回复于 2003-09-03 14:07:47 得分 4
select case when a*1.0/b>0.5 then 1 else 0 end from orderlist group by code
Top
2 楼viptiger(六嘎)回复于 2003-09-03 14:12:38 得分 4
select case when convert(decimal,a)/convert(decimal,b)>0.5 then 1 else 0 end from orderlist group by codeTop
3 楼workhand(我可憨了...)回复于 2003-09-03 14:13:11 得分 3
因a、b都是整形,a/b结果自动转成整形,当a<b时结果等于0,所以要先把a转成decimal型。
同意楼上兄。Top
4 楼nforcedzh(翔天)回复于 2003-09-03 14:18:02 得分 3
看看帮助
/(除)
用一个数除以另一个数(算术除法运算符)。
语法
dividend / divisor
参数
dividend
是要被除的数字表达式。dividend 可以是数字数据类型分类中的任何数据类型(datetime 或 smalldatetime 数据类型除外)的任何有效 Microsoft® SQL Server™ 表达式。
divisor
除数的数字表达式。divisor 可以是具有数字数据类型分类中任何数据类型(datetime 和 smalldatetime 数据类型除外)的任何有效 SQL Server 表达式。
结果类型
返回优先级较高的参数的数据类型。有关数据类型优先级的更多信息,请参见数据类型的优先顺序。
如果用一个整型的 divisor 去除整型的 dividend,其结果是一个整数,小数部分被截断。
注释
由 / 运算符返回的实际值是用第一个表达式除以第二个表达式所得的商。
Top
5 楼txlicenhe(马可)回复于 2003-09-03 14:33:30 得分 3
select case when a*1.0/b>0.5 then 1 else 0 end from orderlist group by codeTop
6 楼wozhuchuanwei(一个组件编写者,就一定是一个更优秀的Delphi开发者)回复于 2003-09-03 15:07:23 得分 3
Create Table TEST(a int,b int)
INSERT INTO TEST SELECT 3,2
INSERT INTO TEST SELECT 2,2
INSERT INTO TEST SELECT 1,2
INSERT INTO TEST SELECT 4,2
SELECT * FROM TEST
select
case
when CAST(a AS Decimal(9,3))/CAST(b AS decimal(9,3))>0.5 then 1 else 0 end from TEST
Drop Table TEST
a b
----------- -----------
3 2
2 2
1 2
4 2
(所影响的行数为 4 行)
-----------
1
1
0
1Top
7 楼icedong3(这是怎么啦)回复于 2003-09-03 15:23:43 得分 0
谢谢!那个问题已经搞定.
还有一问题请教.
orderlist(code,a,b, amount,)
select sum(amount) as 总数量 from orderlist
select sum(amount) as 每个的总数量 from orderlist group by code
我想要的结果:
select 总数量 ,每个的总数量 from ......
不知如何将上面两个语句综合起来,还是有别的写法.
Top




