我有练习练习,我用Django做过,但我不知道如何在纯粹的SQL中做到这一点。
就是这个:
编写一个返回每辆车的SQL查询以及该车的最高速度。
cars
id car
1566 ferrar
2894 jaguar
speeds
car date speed
1566 2010-01-25 255
1566 2010-01-26 265
2894 2010-01-25 195
2894 2010-01-26 240
你能帮我吗?
答案 0 :(得分:1)
PostgreSQL的方法是
SELECT DISTINCT ON (code)
cl.address, co.consumption
FROM client cl
JOIN consumption co USING (code)
ORDER BY co.consumption DESC;
DISTINCT ON
将选择每code
的第一行,即consumption
最大的一行。
答案 1 :(得分:0)
有几种方法可以处理这样的要求。一种方法是连接两个表并使用窗口函数rank
来过滤最大消耗的日期:
SELECT address, date
FROM (SELECT address,
date,
RANK() OVER (PARTITION BY co.code ORDER BY consumption DESC) rk
FROM clients cl
JOIN consumption co ON cl.code = cl.code)
WHERE rk = 1