2017-06-22 31 views
0
id cars  price 
1 bmw 
1 corvette 
1 mercedes 
2 bmw 
3 bmw 
3 toyota 
4 bmw 
4 honda 
5 lotus 

我從其他帖子發現此表,並且只是想用它來解決我的問題。根據它在SQL中出現的時間數返回某些內容

假設ID代表車主,他們擁有多輛車,並且有些車主擁有同一輛車。

我想編寫一個查詢,從而給出一個數n和所有者(ID)

我可以返回的汽車,車主擁有和共有這些車在表的個n。

例如,如果 我給定id 1和n = 4,則它將返回 BMW 如果我給定id 1和n = 1,那麼它將返回 巡洋艦 梅賽德斯

我想通那

select cars from table group by cars having count(cars) = 4 

給我所有在表中出現4次的汽車,但我想把它縮小到一輛屬於某個車主的汽車。

感謝您的幫助

+0

建立派生表,其中返回的重複計數汽車作爲子查詢列和g rouped cars and id ..主要查詢將過濾您的不同計數和/或id,並且應該返回相關車輛 – maSTAShuFu

+0

我該怎麼做。 –

回答

0

方法3:

select * from 
(
    select f1.*, rownumber() over(partition by f1.car) rang 
    from yourtable f1 
) f2 
where f2.rang=4 and f1.id=1 
0

方法1:

with totalcar 
(
select car, count(*) nb 
from yourtable 
group by car 
) 
select * from yourtable f1 inner join totalcar f2 on f1.car=f2.car 
where f1.id=1 and f2.nb=4 
0

方法2:

select * from yourtable f1 
inner join lateral 
(
    select f2.car 
    from yourtable f2 
    where f1.car=f2.car 
    group by f2.car 
    having count(*)=4 
) f3 on 1=1 
where f1.id=1 
相關問題