我有一個不尋常的情況。請考慮下面的代碼:字符字段中排名前3的值的百分比
IF OBJECT_ID('tempdb..#CharacterTest') IS NOT NULL
DROP TABLE #CharacterTest
CREATE TABLE #CharacterTest
(
[ID] int IDENTITY(1, 1) NOT NULL,
[CharField] varchar(50) NULL
)
INSERT INTO #CharacterTest (CharField)
VALUES ('A')
, ('A')
, ('A')
, ('A')
, ('B')
, ('B')
, ('B')
, ('C')
, ('C')
, ('D')
, ('D')
, ('F')
, ('G')
, ('H')
, ('I')
, ('J')
, ('K')
, ('L')
, ('M')
, ('N')
, (' ')
, (' ')
, (' ')
, (NULL)
, ('');
我想查詢它給了我一個字符串是這樣的: A(16%),B(12%),C(8%)
請注意以下幾點:
- 我不希望有空字符串,字符串的所有空格,或前3列空,但我想用整個記錄計數表計算值的百分比。
- 關係可以忽略,所以如果列表中有22個值的頻率爲8%,那麼只要返回任何一個首先就可以。
- 百分比可以四捨五入爲整數。
我想找到最簡單的方法來編寫此查詢,同時仍然保留T-SQL兼容性回到SQL Server 2005.什麼是最好的方式來做到這一點?窗口函數?
沒有變量,頭髮比我的盒子上的快! – 2013-04-29 20:56:35