得到两个数学运算的结果是sql

时间:2013-12-06 20:36:52

标签: sql sql-scripts

我正在使用SQL Server 我有2张桌子:

table1:用于购买数据数据{item_id,price,...} table2用于购物车数据(item_id,datetime,...)

如何在表1中找到等于= number_of_item_in table2 / number_of_item_的购买概率;

哪个更好:

use :
set count1=(select count(*) from table1)
set count2=(select count(*) from table2)
and print count2/count1;

or by something like :

select c2/c1 as probability from 
(
select count(*) as c1 from Table1 , select count(*) as c2 from table2) 

)
请其中哪一项更有效。

1 个答案:

答案 0 :(得分:2)

如果你看一下代码的意图,那么它们基本上是等价的。问题是你是否想要将T-SQL与变量一起使用,或者只是将所有内容放在一个语句中。使用变量的一个原因是因为您将再次重复使用这些值。

关于语法的一些注释:

它们都将返回0或1,因为SQL Server进行整数除法。

第一个语法不正确。你应该使用:

declare @count1 float = (select count(*) from table1);
declare @count2 float = (select count(*) from table2);
print count2/count1;

另外,第二个语法不正确。这是一个正确的版本:

select c2/c1 as probability 
from (select cast(count(*) as float) as c1 from Table1) c1 cross join
     (select count(*) as c2 from table2) c2;