2013-04-07 71 views
-1

嗨,大家有一個問題,並希望你的幫助來解決它我有一個棘手的問題要求我顯示的車輛列表讓最流行的模型擁有最大數量的租金'? ????顯示最大租用數量列表

SQL服務器

CAR_SERIAL_NO  MODEL       MAKE       
---------------- ------------------------------ -------------- 
1234    Turbo       Porche         
5678    Zafera       Opel         
9012    Crawn       Toyota         
3456    M5        Bmw            
7890    Cabrio       Bmw 

CAR_REGSTRATE_NO CAR_SERIAL_NO 
---------------- ------------- 
XV98CR    1234       
CXER73    5678      
098X44    9012      
89EE43    3456      
09KK33    7890 

CONTRACT_NO CAR_REGSTRATE_NO CLIENT_ID  START  END 
------------- ----- ----------- --- ------ ----------- ----------- 
2344    XV98CR   45623  01-DEC-02 20-FEB-03     
2335    CXER73   23344  12-OCT-02 12-DEC-03     
3333    098X44   22442  10-OCT-02 15-OCT-03     
5555    89EE43   77774  10-FEB-13 15-FEB-03     
6666    09KK33   33223  22-JUN-12 10-JAN-03 
+4

請不要轉發問題,請修改您的原始問題。 – 2013-04-07 18:40:26

回答

0

選擇所有車型,車輛和十字交叉連接與租金加盟,通過計數模型組(*) - 我們稱之爲子查詢表T.有了這個,你可以要求包含計數和過濾器T的列的最大值僅顯示最大值。

+0

嗨阿德里安,有無論如何我可以使子查詢,但如果我問在子查詢和我如何使用max包含計數列? – chris 2013-04-07 20:04:00

0

既然你沒有列出你所需要的結果,我已經盡力了。如果你需要不同的東西,你必須編輯你的問題並添加你想要的輸出。

不管怎麼說,這可能工作:

with HireDetails as 
(
    select CAR_REGSTRATE_NO 
    , Hires = count(1) 
    , HireDays = sum(datediff(dd, START, [END])) 
    from Hire 
    group by CAR_REGSTRATE_NO 
) 
select c.MAKE 
    , c.Model 
    , c.CAR_SERIAL_NO 
    , r.CAR_REGSTRATE_NO 
    , hd.HireDays 
    , hd.Hires 
from Registration r 
    inner join Car c on r.CAR_SERIAL_NO = c.CAR_SERIAL_NO 
    left join HireDetails hd on r.CAR_REGSTRATE_NO = hd.CAR_REGSTRATE_NO 
order by hd.HireDays desc 

SQL Fiddle with demo。您會注意到,我更改了START日期的某些日期比END日期更長。同樣,如果這不正確,您需要更新您的問題並提供更多詳細信息。

我已經彙總了租用的詳細信息,因爲它不是一個合理的假設,即一輛汽車只會被僱用一次,即使您的示例數據中存在這種情況。