首页 > 试题广场 >

出现三次以上相同积分的情况

[编程题]出现三次以上相同积分的情况
  • 热度指数:80615 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解


在牛客刷题的小伙伴们都有着牛客积分,积分(grade)表简化可以如下:

id number
1
2
3
4
5
111
333
111
111
333

id为用户主键id,number代表积分情况,让你写一个sql查询,积分表里面出现三次以及三次以上的积分,查询结果如下:

111
注意:若有多个符合条件的number,则按number升序排序输出。
示例1

输入

drop table if exists grade;
CREATE TABLE `grade` (
`id` int(4) NOT NULL,
`number` int(4) NOT NULL,
PRIMARY KEY (`id`));

INSERT INTO grade VALUES
(1,111),
(2,333),
(3,111),
(4,111),
(5,333);

输出

111
select number
from grade
group by number
having count(number) >= 3;
group by分组统计,having筛选。

发表于 2021-10-09 17:40:49 回复(0)
select number
from grade
group by number
having count(*)>=3;

发表于 2021-04-11 09:58:34 回复(0)
select number from grade 
group by number 
having count(number) >= 3

要筛选某一字段出现的次数,先分组,再设置筛选条件,涉及到聚合函数,用having
发表于 2021-12-23 10:10:59 回复(0)
select number
from grade
group by number
having count(number)>=3;

发表于 2020-08-27 17:31:30 回复(3)
本题表述有误,“3次以上” 应改为 “3次及以上”
SELECT number FROM grade
GROUP BY number
HAVING COUNT(number) >= 3


发表于 2020-09-03 21:28:28 回复(10)
SELECT number
FROM grade
GROUP BY number
HAVING COUNT(number)>=3
题目为积分表里面出现三次以及三次以上的积分
获取目标:积分
筛选条件:出现三次或三次以上
思路:筛选条件为某一字段出现次数,则要对该字段进行统计,故要先对字段进行分组GROUP BY,第二要设置筛选条件COUNT(number)>=3, 因条件包含聚集函数,所以只能使用HAVING,而不能使用WHERE。
发表于 2021-03-26 10:52:32 回复(0)
大家的答案都写得太好了。我自己第一反应是用子查询,看了大家的答案之后,反倒觉得自己多此一举,把简单问题复杂化了。
select number
from (
      select number,count(number) a
      from grade
      group by number
    ) c
where c.a>=3

发表于 2022-08-01 20:23:37 回复(0)
考点:聚合函数的使用
select number
from grade
group by number
having count(*) >2


发表于 2021-03-28 10:13:11 回复(0)
select distinct g1.number 
from grade g1
where (select count(*) from grade g2 
     where g1.number=g2.number)>=3
发表于 2020-09-27 15:11:15 回复(1)
按照number分组,然后二次统计每组的id个数,选出满足条件(大于等于3)的
select number from grade group by number having count(id)>2


发表于 2020-08-20 11:26:32 回复(1)
忘记使用having了,用了subquery,写的有点复杂
SELECT c.number
FROM (
    SELECT 
        number,
        COUNT(number) AS cnt
    FROM grade
    GROUP BY number) AS c
WHERE c.cnt >= 3
ORDER BY c.number ASC


编辑于 2024-02-21 10:44:20 回复(0)
select number from grade
group by number
having count(number)>=3;

编辑于 2024-02-05 13:49:31 回复(0)
select number
from grade
group by number
having count(number) >= 3;
编辑于 2024-01-22 21:58:38 回复(0)
SELECT
    number
FROM
    grade
GROUP BY
    number
HAVING
    COUNT(number)>=3

发表于 2023-11-28 10:01:41 回复(0)
select
    number
from
    grade
group by
    number
having
    count(id) >= 3

发表于 2023-11-24 14:28:54 回复(0)
select number from
(select number,count(number) as a
from grade
group by number
) as c
where c.a >= 3
order by number asc;

发表于 2023-11-08 22:13:55 回复(0)
出现三次以上相同积分的情况
select number from grade
group by number
having count(number) >= 3
order by number


发表于 2023-10-30 10:50:12 回复(0)
select number
from grade
group by number
having count(number)>2
order by number 

发表于 2023-09-06 16:07:52 回复(0)
select number
from grade
group by number
having count(number)>=3
打卡
发表于 2023-08-12 23:19:55 回复(0)
select number
from grade
group by number
having count(*) >= 3
order by number;

发表于 2023-08-11 10:43:37 回复(0)