我有车串的出现次数
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
...
请,我需要这方面的帮助。
我有车串的出现次数
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
...
请,我需要这方面的帮助。
使用count()
作为窗口函数:
select c.*, count(*) over (partition by brand) as n
from cars c;
使用相关子查询数:
select c1.id, c1.brand, c1.model, (select count(*) from cars c2
where c2.id = c1.id)
from cars c1
你可以这样做:
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。
为什么在同一张表中混合使用汽车品牌名称和型号?我会去一个car_brand表和一个car_model表。 – jarlh