嗨大家有个问题,希望得到你的帮助解决它我有一个棘手的问题,要求我显示车辆清单,让“最受欢迎的车型保持最大租金数量”?????
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
答案 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
日期长了十年。同样,如果这不正确,您需要更详细地更新您的问题。
我已经汇总了雇佣细节,因为这不是一个合理的假设,即汽车只会被雇用一次,即使您的样本数据就是这种情况。