2015-06-09 42 views
0

我有车串的出现次数

id | brand | model 
1 | bmw | 525 
1 | bmw | 533 
2 | audi | a8 
... 

我想利用特定ID的品牌出现,在这个例子中的列表:

id | brand | model | n 
1 | bmw | 525 | 2 
1 | bmw | 533 | 2 
2 | audi | a8 | 1 
... 

请,我需要这方面的帮助。

+0

为什么在同一张表中混合使用汽车品牌名称和型号?我会去一个car_brand表和一个car_model表。 – jarlh

回答

1

使用count()作为窗口函数:

select c.*, count(*) over (partition by brand) as n 
from cars c; 
0

使用相关子查询数:

select c1.id, c1.brand, c1.model, (select count(*) from cars c2 
            where c2.id = c1.id) 
from cars c1 
0

你可以这样做:

SELECT T1.id,T1.brand,T1.model,T2.n 
FROM TableName T1 JOIN 
(SELECT id,brand,COUNT(1) as n 
FROM TableName 
GROUP BY id,brand) as T2 ON T1.id=T2.id AND T1.brand=T2.brand 

结果:

id brand model n 
1 bmw  525  2 
1 bmw  533  2 
2 audi a8  1 

样品结果于SQL Fiddle

相关问题