2012-05-17 98 views
0

我一直在玩一個大型的數據庫,我做了很多總結統計。我忍不住想,要比我所做的要快。添加一個局部變量到結果集的每一行

就拿以下查詢:

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

我完全不理解你的問題。你想獲得所有行的總數,並且想要按總數計算每行的每個計數?如果是這樣,你可以在你的選擇中使用預定義的@total,如SELECT Count(*)/'@total,... – YvesR

+0

在第一行中,0,0,0表示沒有1,2或3的人。希望整個人羣能夠在thing3的右邊一列(selecttable(*)from thatTable,然後另一列divist數據集中的人員總數 – wootscootinboogie

+0

編輯提議的結果集以求清晰度 – wootscootinboogie

回答

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 

此查詢就給你算你的分組的記錄,百分比計就以總脂肪酶和脂肪酶總量。

+0

第一個選項非常接近,看起來很接近到我需要的東西(儘管ih廣告做100 *計數(*)。但是這仍然不會將@totalpop添加到每一行的末尾。 – wootscootinboogie

+0

什麼是'@totalpop現在:)? – YvesR

+1

imho不做100 * ... 1 = 100%,所以你的結果是可以的,如果你想格式化它,例如在一個SQL報告你的格式百分比。 – YvesR

相關問題