将局部变量添加到结果集的每一行

时间:2012-05-17 15:22:38

标签: sql tsql

我一直在玩一个大型数据库,我已经完成了许多汇总统计。我不禁想到必须比我正在做的更快捷。

以下面的查询为例:

select count(*), thing1, thing2, thing3 from myTable
group by thing1, thing2, thing3

enter image description here

1 =真,0 =假。如果我想从数据集中添加一个局部变量(比如select @total=count(*) from peopleTable)并将每行计数除以@total,那么有一个典型的SQL解决方案吗?我知道如何在每行的基础上做到这一点,但不是像这一样。

1 个答案:

答案 0 :(得分:2)

编辑:

现在我想你想要这个:

DECLARE @total int;
SET @total = (SELECT COUNT(*) FROM peopleTable)
SELECT COUNT(*) AS count_column
     , CAST(COUNT(*) AS float) / @total AS percent_total
     , @total AS total_ppl
     , thing1, thing2, thing3 
FROM myTable
GROUP BY thing1, thing2, thing3

此查询为您提供COUNT个分组记录,有关总人数和总人数的百分比计数。