首页 > 试题广场 >

已知grade表如下,要求找出分数重复的数据,下列选项中SQ

[单选题]
已知grade表如下,要求找出分数重复的数据,下列选项中SQL语句正确的是()
sno mark
1 85
2 95
3 85
4 78

  • SELECT mark FROM (

    SELECT mark,COUNT(mark) AS num

    FROM grade

    GROUP BY mark

    ) AS STATISTIC

    WHERE num>1

  • SELECT mark,COUNT(mark)>1

    FROM grade

    GROUP BY mark

  • SELECT mark FROM (

    SELECT mark,COUNT(mark) AS num

    FROM grade

    GROUP BY mark

    )

    WHERE num>1

  • SELECT mark

    FROM grade

    GROUP BY mark

    WHERE COUNT(mark)>1

选项B:
COUNT(mark)>1 错  
更正: 在GROUP BY 子句后跟HAVING 子句  COUNT (mark)>1
选项C:
子查询为表时要为别名
选项D:
WHERE 不能跟聚合函数
更正: 改WHERE为 HAVING 
故:正确答案为A
发表于 2022-01-08 09:15:27 回复(4)
细节:表名必须写名
发表于 2021-12-13 15:09:04 回复(2)
明明三句话可以解决啊,为什么要写这么复杂
SELECT mark
FROM grade
having count(mark)>1;


发表于 2022-02-12 21:10:56 回复(7)
B:条件语句要放在having或者where中,where不能使用聚合函数,所以用having
更正:select mark  from grade group by mark having count(mark)>1

C:where 、group by、 having 的执行顺序是 先where 再group by 再having,想要先group by 之后再进行筛选,需要使用 having
更正:select mark from  (select mark, count(mark) as num from  grade group by mark)  having num>1
D:where 后边不可以跟聚合函数(count 、avg、sum...
更正:select mark  from grade group by mark having count(mark)>1
@牛客解题官
编辑于 2022-03-31 12:13:09 回复(2)
在mysql中:
select mark
from grade
group by mark
having count(mark)>1;

发表于 2022-08-21 00:04:43 回复(0)
最前面的mark应该加上STATISTI.

发表于 2021-12-23 15:16:47 回复(0)
发表于 2023-02-01 15:24:04 回复(0)
子查询为表时需要命名别名
发表于 2022-10-23 16:15:48 回复(0)
AS一般不是可以省略吗?

发表于 2022-10-13 15:19:05 回复(0)
表名表名表名!重要的事说三遍

发表于 2022-07-04 22:43:37 回复(0)
这个A,这个where限制条件不是在static这个表上的吗?这个表没有num字段啊。
发表于 2022-03-23 18:08:10 回复(0)
子查询为表时要起个别名
发表于 2022-03-17 20:58:58 回复(0)
Group by之后再筛选需要having
发表于 2022-01-14 23:46:36 回复(0)