我一直在玩一个大型数据库,我已经完成了许多汇总统计。我不禁想到必须比我正在做的更快捷。
以下面的查询为例:
select count(*), thing1, thing2, thing3 from myTable
group by thing1, thing2, thing3
1 =真,0 =假。如果我想从数据集中添加一个局部变量(比如select @total=count(*) from peopleTable
)并将每行计数除以@total,那么有一个典型的SQL解决方案吗?我知道如何在每行的基础上做到这一点,但不是像这一样。
答案 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个分组记录,有关总人数和总人数的百分比计数。