Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 列出得分从未超过3分的人的姓名_Sql - Fatal编程技术网

Sql 列出得分从未超过3分的人的姓名

Sql 列出得分从未超过3分的人的姓名,sql,Sql,从这样的表格中: Name | Score ------ | ------ Bill | 1 Bill | 2 Bill | 1 Steve | 1 Steve | 4 Steve | 1 返回得分从未超过3的人的姓名 答案是: Name | ------ | Bill | SELECT DISTINCT name FROM mytable WHERE Name NOT IN ( SELECT Name

从这样的表格中:

Name   | Score
------ | ------
Bill   | 1  
Bill   | 2
Bill   | 1
Steve  | 1 
Steve  | 4 
Steve  | 1 
返回得分从未超过3的人的姓名

答案是:

Name   | 
------ | 
Bill   |  
SELECT DISTINCT name
  FROM mytable 
 WHERE Name NOT IN 
        ( SELECT Name 
            FROM mytable 
           WHERE score > 3
        )
一种解决办法是:

Name   | 
------ | 
Bill   |  
SELECT DISTINCT name
  FROM mytable 
 WHERE Name NOT IN 
        ( SELECT Name 
            FROM mytable 
           WHERE score > 3
        )
样本表:

脚本:

结果:


关键是获得每个人的最高分数,然后过滤到最高分数低于3的人。要获得最大值,您需要按和最大值进行聚合分组。然后,要对聚合应用筛选器,您必须使用have而不是WHERE。所以你最终会得到:

SELECT Name, MAX(Score) AS HighScore
FROM Table 
GROUP BY Name 
HAVING MAX(Score) <= 3;

@DanieleO您的基本sql查询有一个主要问题。@scott查看一下您使用的已发布查询?博士后?Oracle?这个解决方案似乎有点过火了,不是吗?很多方面每个人都有自己的想法。堆栈溢出就是这个问题的名称不同的解决方案@EstebanP。提问者会有很多选择。对不起,听起来这个解决方案不应该是错的。我只是想哇,那就像拿着大锤去敲坚果-
NAME    Score
Bill    1
Bill    2
Bill    1
SELECT Name, MAX(Score) AS HighScore
FROM Table 
GROUP BY Name 
HAVING MAX(Score) <= 3;