2016-12-14 96 views
0
+------+-------+-------+---------+---------+ 
| R_ID | BU | DIV | Product | C_Func | 
+------+-------+-------+---------+---------+ 
| 1 | BU1 | Div1 | P1 | Dev | 
| 2 | BU2 | Div2 | P2 | Dev | 
| 3 | BU2 | Div2 | P2 | BA  | 
| 4 | BU3 | Div3 | P3 | Dev | 
| 5 | BU3 | Div3 | P3 | QA  | 
| 6 | BU4 | Div4 | P4 | Dev | 
| 7 | BU4 | Div4 | P4 | QA  | 
| 8 | BU4 | Div4 | P4 | BA  | 
| 9 | BU1 | Div1 | P1 | Dev | 
| 10 | BU2 | Div2 | P2 | Dev | 
| 11 | BU2 | Div2 | P2 | BA  | 
| 12 | BU3 | Div3 | P3 | Dev | 
| 13 | BU3 | Div3 | P3 | QA  | 
| 14 | BU4 | Div4 | P4 | Dev | 
| 15 | BU4 | Div4 | P4 | QA  | 
| 16 | BU4 | Div4 | P4 | BA  | 
| 17 | BU3 | Div3 | P3 | QA  | 
| 18 | BU4 | Div4 | P4 | Dev | 
| 19 | BU4 | Div4 | P4 | QA  | 
| 20 | BU4 | Div4 | P4 | BA  | 
+------+-------+-------+---------+---------+ 

我有一個表中的數據,如上所示,我使用sql連接和所有取得。 我想要的是在(BU,DIV,Product,C_func)集合上工作的'R_ID'的數量。例如對於例如 我想知道有多少個'R_ID'(BU1,Div1,P1,Dev),因爲有2個入口(BU1,Div1,P1,Dev),所以計數應該是2。如何根據多列的特定值獲取列的COUNT值?

預期輸出:

+-------+-------+---------+---------+-------+ 
| BU | DIV | Product | C_Func | Count | 
+-------+-------+---------+---------+-------+ 
| BU1 | Div1 | P1 | Dev | 2 | 
| BU2 | Div2 | P2 | Dev | 2 | 
| BU2 | Div2 | P2 | BA  | 2 | 
| BU3 | Div3 | P3 | Dev | 2 | 
| BU3 | Div3 | P3 | QA  | 3 | 
| BU4 | Div4 | P4 | Dev | 3 | 
| BU4 | Div4 | P4 | QA  | 3 | 
| BU4 | Div4 | P4 | BA  | 3 |  
+-------+-------+---------+---------+-------+ 

請幫助我。 在此先感謝。

回答

1

可以是這樣做的:

select BU, DIV, Product, C_Func, count(*) 
from  mytable 
group by BU, DIV, Product, C_Func 
+0

感謝。我沒有想過這會很簡單 –

1

這是一個簡單GROUP BY場景。

SELECT BU,DIV,Product,C_Func,COUNT(R_ID) 
FROM YOURTABLE 
GROUP BY BU,DIV,Product,C_Func 

您需要group by所有你想看到他們作爲羣體和左柱而出適用count那些列。

0
SELECT BU,DIV,Product,C_Func,COUNT(*) 
FROM YOURTABLE 
GROUP BY BU,DIV,Product,C_Func 
+1

雖然這段代碼可以解決這個問題,但[包括解釋](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有幫助以提高您的帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – DimaSan

0

根據R_ID的獨特性,有兩種替代方法。如果它被定義爲UNIQUE INDEX,那麼你可以簡單地計算行數爲:

SELECT BU1 , COUNT(*) 
    FROM YourTable 
GROUP BY BU1 ; 

如果定義爲UNIQUE INDEX,你想知道不同的指數有多少,則查詢變爲:

SELECT BU1 , COUNT(DISTINCT R_ID) 
    FROM YourTable 
GROUP BY BU1 ; 

相同類型的查詢可以用於其他列。

0

試試這個:

select BU, DIV, Product, C_Func, count(1) 
from  table 
group by BU, DIV, Product, C_Func 
0
;WITH tb(R_ID,BU,DIV,Product,C_Func)AS(
    SELECT 1,'BU1','Div1','P1','Dev' UNION ALL 
    SELECT 2,'BU2','Div2','P2','Dev' UNION ALL 
    SELECT 3,'BU2','Div2','P2','BA' UNION ALL 
    SELECT 4,'BU3','Div3','P3','Dev' UNION ALL 
    SELECT 5,'BU3','Div3','P3','QA' UNION ALL 
    SELECT 6,'BU4','Div4','P4','Dev' UNION ALL 
    SELECT 7,'BU4','Div4','P4','QA' UNION ALL 
    SELECT 8,'BU4','Div4','P4','BA' UNION ALL 
    SELECT 9,'BU1','Div1','P1','Dev' UNION ALL 
    SELECT 10,'BU2','Div2','P2','Dev' UNION ALL 
    SELECT 11,'BU2','Div2','P2','BA' UNION ALL 
    SELECT 12,'BU3','Div3','P3','Dev' UNION ALL 
    SELECT 13,'BU3','Div3','P3','QA' UNION ALL 
    SELECT 14,'BU4','Div4','P4','Dev' UNION ALL 
    SELECT 15,'BU4','Div4','P4','QA' UNION ALL 
    SELECT 16,'BU4','Div4','P4','BA' UNION ALL 
    SELECT 17,'BU3','Div3','P3','QA' UNION ALL 
    SELECT 18,'BU4','Div4','P4','Dev' UNION ALL 
    SELECT 19,'BU4','Div4','P4','QA' UNION ALL 
    SELECT 20,'BU4','Div4','P4','BA' 
    ) 
    SELECT BU,DIV,Product,C_Func,COUNT(DISTINCT R_ID) AS [R_ID_Count] 
    FROM tb GROUP BY BU,DIV,Product,C_Func 
 
BU DIV Product C_Func R_ID_Count 
---- ---- ------- ------ ----------- 
BU1 Div1 P1  Dev 2 
BU2 Div2 P2  BA  2 
BU2 Div2 P2  Dev 2 
BU3 Div3 P3  Dev 2 
BU3 Div3 P3  QA  3 
BU4 Div4 P4  BA  3 
BU4 Div4 P4  Dev 3 
BU4 Div4 P4  QA  3 

相關問題