2016-12-14 97 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 

相关问题