sql - 如何修改 sql 查询以仅在出现次数大于 3 时才显示附加信息?
问题描述
在这个问题中,解决方案显示了如何计算每个唯一酸的 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 个 desids 我想要“年龄”和“大小”属性。
解决方案
count
您可以按如下方式使用分析功能:
select * from
(SELECT t.*, COUNT(*) over (partition by ancid) as cnt
FROM mytable t ) t
where cnt > 3
推荐阅读
- python - python sqlite3 executemany 除了每一行
- css - CSS 粘性分组表头
- python - 为什么这个 else 语句不返回 False?
- google-cloud-platform - 有没有办法在向其发送流量之前测试完全托管的 Cloud Run 修订版?
- bash - 无法弄清楚如何实现这个bash参数
- vue.js - vuetify 数据表不显示数据
- reactjs - 反应:res.json() 数据未定义
- python - 抓取中途停止爬行
- android - 如何在 Android 登录中获取 Firebase 身份验证令牌
- sql - 在 Go 中推广 *sql.Rows 扫描