显示最大租赁数量列表

时间:2013-04-07 18:37:59

标签: sql-server

嗨大家有个问题,希望得到你的帮助解决它我有一个棘手的问题,要求我显示车辆清单,让“最受欢迎的车型保持最大租金数量”?????

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  

2 个答案:

答案 0 :(得分:0)

选择所有模型,与车辆交叉连接并与租金交叉连接,按计数分组(*) - 让我们调用此子查询表T.有了这个,您可以要求包含计数的最大列数和过滤器T仅显示最大

答案 1 :(得分: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日期长了十年。同样,如果这不正确,您需要更详细地更新您的问题。

我已经汇总了雇佣细节,因为这不是一个合理的假设,即汽车只会被雇用一次,即使您的样本数据就是这种情况。