我有下表:

+------+-----------+-------------+--------------+
| year | team_name | player_name | total_points |
+------+-----------+-------------+--------------+
| 1992 | Magic     | Shaq        | 2000         |
+------+-----------+-------------+--------------+
| 1992 | Magic     | Steve Kerr  | 4000         |
+------+-----------+-------------+--------------+
| 1996 | Lakers    | Shaq        | 2300         |
+------+-----------+-------------+--------------+
| 1996 | Lakers    | Magic       | 1000         |
+------+-----------+-------------+--------------+
| 2004 | Heat      | Shaq        | 3000         |
+------+-----------+-------------+--------------+

我正在试着写一个查询,找出沙克得分最多的所有球队.

以下是我的try :

SELECT year, team, MAX(total_points) FILTER(WHERE player_name = 'Shaq'
FROM basketball
GROUP BY year, team;

这显然是不正确的.我想我没有正确地使用过滤器,因为我找不到沙克得分最多的球队

正确的表应该只有第三行和最后一行

推荐答案

你已经很接近了.你想要一个HAVING条款来比较球队的年度最高得分和沙克的得分,并且只保留那些匹配的.

SELECT year, team, MAX(total_points)
FROM basketball
GROUP BY year, team
HAVING MAX(total_points) = MAX(total_points) FILTER (WHERE player_name = 'Shaq');

Sql相关问答推荐

仅在新值与旧值不同时才插入PostgreSQL

获取家谱树中第一次出现的特定信息,然后停止

Select 起始参数和截止参数之间的间隔,包括与期间重叠的参数

Access VBA SQL命令INSERT FOR MULTIME VALUE

在Oracle SQL中将列值转换为行

如何将`now()`作为SQL插入语句的一部分?

正在try 从SQL获取最新的ID和一个唯一名称

按分类标准检索记录

重用传递给 node 的参数-postgres upsert查询

我需要一个regexp_like来只验证字母D或T、数字和管道

明细表中没有记录如何更新主表的值为0

SQL到Snowflake-转换嵌套的SELECT(值

统计重复记录的总数

将最近的结束日期与开始日期相匹配

列(值不为空)到其他有序列

使用row_number() over partition by保留首次出现且值不为空的行的方法

PostgreSQL - 从同一张表中获取值

根据是否存在值组合分组并 Select 行

Postgres 条件求和函数

如何根据 ID 和指标从 2 个表中找到不同的值?