2013-06-13 74 views
1

我有MSSQL 2008 R2數據庫中大約3mn數據點的下表結構。四分位Boxplot :: MSSQL 2008 R2

vertical|Defects(F)|Defects(NF)| 
-------------------------------- 
Billing |193  |678 
Provi |200  |906 
Billing |232  |111 
Analyt |67  |0 
Provi |121  |690 

我需要計算最小值,最大值,第一四分位數和第三四分位數來繪製晶須圖。因此,希望在下面的格式

vertical|Max  |Min  |Q1  |Q3 
-------------------------------- 
Billing |343  |24  |103.75 |263.25 
Provi |811  |110  |285.25 |635.75 
Analyt |67  |67  |67  |67 

請注意,最大,最小和四分位計算所添加的缺陷後進行(F)和缺陷(NF)

請幫助輸出!

+0

有一些功能可以做你想要的東西NTILE http://msdn.microsoft.com/en-us/library/ms175126(v=sql.90).aspx –

+0

@youbarajsharma:你有一個日期字段表?你可以提供樣本輸入嗎?你有什麼嘗試? –

回答

1

這種方法僅適用,如果我們有各類型

q1min的許多行是第一季度(全部測試分)的最低

q2min是第二季度(第一四分位數)

q3max是最低最大的第三季度(第三個四分)的

q4max最大4RD季度(全部測試最大)

declare @my_table table (vertical varchar(50),[Defects(F)] int, [Defects(NF)] int); 
insert into @my_table values ('Billing',193,678); 
insert into @my_table values ('Provi',200,906); 
insert into @my_table values ('Billing',232,111); 
insert into @my_table values ('Analyt',67,0); 
insert into @my_table values ('Provi',121,690); 

insert into @my_table values ('Billing',111,678); 
insert into @my_table values ('Billing',111,678); 
insert into @my_table values ('Billing',111,678); 
insert into @my_table values ('Billing',111,678); 
insert into @my_table values ('Billing',111,678); 
insert into @my_table values ('Billing',111,678); 
insert into @my_table values ('Billing',111,678); 

WITH cte as (
    select 
     vertical, 
     [Defects(F)]+[Defects(NF)] as defects 
    from @my_table 
), 
PivotData AS 
(
    select 
     vertical, 
     CASE WHEN quartile in (1,2) THEN MIN(defects) ELSE MAX(defects) END m, 
     quartile 
    from (
     select 
      vertical, 
      defects, 
      ntile(4) over (PARTITION BY vertical order by defects) as quartile 
     from cte 
    ) i 
    group by vertical, quartile 
) 
select vertical, [1] as q1min, [2] as q2min, [3] as q3max, [4] as q4max 
FROM PivotData 
PIVOT (SUM(m) FOR quartile in ([1],[2],[3],[4])) as p; 
+0

非常感謝Alex,你的建議確實奏效 –