Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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,在中,该解决方案显示了如何计算每个唯一ancid的desid出现次数。如何修改问题的解决方案,使其提供有关大于3的计数的额外信息 例如,如果我的表结构如下: create table mytable ( desid bigint not null, ancid bigint not null ); insert into mytable (ancid,desid) values (1,10); insert into mytable (ancid,desid) values

在中,该解决方案显示了如何计算每个唯一ancid的desid出现次数。如何修改问题的解决方案,使其提供有关大于3的计数的额外信息

例如,如果我的表结构如下:

create table mytable (
    desid bigint not null,
    ancid bigint not null
  );

insert into mytable (ancid,desid) values (1,10);
insert into mytable (ancid,desid) values (1,20);
insert into mytable (ancid,desid) values (1,21);
insert into mytable (ancid,desid) values (1,22);
insert into mytable (ancid,desid) values (2,30);
insert into mytable (ancid,desid) values (3,40);
insert into mytable (ancid,desid) values (3,41);
insert into mytable (ancid,desid) values (3,42);
insert into mytable (ancid,desid) values (3,43);

create table desinfo (
        desid bigint not null,
        age bigint not null,
        size bigint not null
      );
  
insert into desinfo (desid, age, size) (10, 22, 100); 
insert into desinfo (desid, age, size) (20, 23, 101); 
insert into desinfo (desid, age, size) (21, 24, 102); 
insert into desinfo (desid, age, size) (22, 25, 103); 
insert into desinfo (desid, age, size) (30, 26, 104); 
insert into desinfo (desid, age, size) (40, 27, 105); 
insert into desinfo (desid, age, size) (41, 28, 106); 
insert into desinfo (desid, age, size) (42, 29, 107); 
insert into desinfo (desid, age, size) (43, 30, 108); 
从的解决方案中,我们可以运行以下查询:

SELECT   ancid, COUNT(*)
FROM     mytable
GROUP BY ancid
这给了我一个输出,比如:

4 rows with ancid=1
1 rows with ancid=2
4 rows with ancid=3

如何修改查询以获取有关desid计数>3的其他信息。例如,ancsid=1和ancsid=3的4个设计我想要年龄和尺寸属性。

您可以使用分析函数count,如下所示:

select * from
(SELECT t.*, COUNT(*) over (partition by ancid) as cnt
   FROM mytable t ) t
where cnt > 3

我想我要找的是:从desinfo中选择*其中desid在select desid from select t.*中,按ancid将*计算为我的表t中的cnt,其中cnt>3,但我会给你评分,因为你非常接近。