我目前正在对microsoft sql server进行一个快速查询,该查询应返回不同的安装,这些安装在去年发生的事件最多。
这是我目前得到的,但我知道这不是正确的方法,我希望得到一些启示:
SELECT
i.idInstalac, i.nomInstalac, COUNT(e.idEvento) as cantEventos
FROM
Instalacion i, Eventos e
WHERE
i.idInstalac = e.idInstalac
AND YEAR(e.fchEvento) = 2019
GROUP BY
i.idInstalac, i.nomInstalac
HAVING
MAX cantEventos
谢谢
1条答案
按热度按时间mlmc2os51#
一个简单的解决办法是
TOP (1) WITH TIES
:注意我重写了你的
JOIN
作为一个明确的,现代的连接(与ON
关键字):隐式联接是一种旧语法,不应在新代码中使用。我还更改了WHERE
子句:对列使用日期函数效率较低,并且会阻止数据库使用现有索引