我有这个代码,但我需要的是“n_vezes_ganhas”的MAX。这段代码显示了谁占据了第一名和多少次,但我想要的是看谁是第一次。
SELECT (remadores.nome) AS remador, (regata.nome) AS regata,
COUNT(remadores.cod_remador) AS n_vezes_ganhas
FROM remadores,
resultados,
prova,
regata
WHERE remadores.cod_remador = resultados.cod_remador
AND resultados.cod_resultado = prova.cod_resultado
AND prova.cod_regata = regata.cod_regata
AND resultados.posição = 1
GROUP BY remadores.nome
答案 0 :(得分:0)
试试这个:
它对查询进行子查询并获取计算列的最大值。
SELECT MAX(c.n_vezes_ganhas) n_vezes_ganhas
FROM
(
SELECT (remadores.nome) AS remador, (regata.nome)AS regata,
COUNT(remadores.cod_remador) AS n_vezes_ganhas
FROM remadores,resultados,prova,regata
WHERE remadores.cod_remador=resultados.cod_remador
AND resultados.cod_resultado= prova.cod_resultado
AND prova.cod_regata=regata.cod_regata
AND resultados.posição = 1
GROUP BY remadores.nome
) c
答案 1 :(得分:0)
一种解决方案是使用ALL
SELECT (remadores.nome) AS remador,
(regata.nome)AS regata,
COUNT(remadores.cod_remador) AS n_vezes_ganhas
FROM remadores,resultados,prova,regata
WHERE remadores.cod_remador=resultados.cod_remador
AND resultados.cod_resultado= prova.cod_resultado
AND prova.cod_regata=regata.cod_regata
AND resultados.posição = 1
GROUP BY remadores.nome
HAVING COUNT(remadores.cod_remador) >= ALL (
SELECT COUNT(remadores.cod_remador) AS n_vezes_ganhas
FROM remadores,resultados,prova,regata
WHERE remadores.cod_remador=resultados.cod_remador
AND resultados.cod_resultado= prova.cod_resultado
AND prova.cod_regata=regata.cod_regata
AND resultados.posição = 1
GROUP BY remadores.nome
)
答案 2 :(得分:0)
据我所知,只需要对结果进行排序,如果您只想获得最高奖金,您还可以添加TOP 1:
SELECT TOP 1 (remadores.nome) AS remador, (regata.nome)AS regata,
COUNT(remadores.cod_remador) AS n_vezes_ganhas
FROM remadores,resultados,prova,regata
WHERE remadores.cod_remador=resultados.cod_remador
AND resultados.cod_resultado= prova.cod_resultado
AND prova.cod_regata=regata.cod_regata
AND resultados.posição = 1
GROUP BY remadores.nome
ORDER BY n_vezes_ganhas DESC
答案 3 :(得分:0)
首先,学会使用正确的,明确的JOIN
语法。
然后,您的问题的答案是ORDER BY
,可以通过某种方式获取第一行。 ANSI标准方法是:
SELECT rem.nome AS remador, reg.nome AS regata,
COUNT(rem.cod_remador) AS n_vezes_ganhas
FROM remadores rem JOIN
resultados res
ON rem.cod_remador = res.cod_remador JOIN
prova p
ON res.cod_resultado = p.cod_resultado JOIN
regata reg
ON p.cod_regata = reg.cod_regata
WHERE res.posição = 1
GROUP BY rem.nome
ORDER BY n_vezes_ganhas
FETCH FIRST 1 ROW ONLY;
请注意表别名和限定列名的使用。这些使查询更容易阅读和写入。