首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于计数的连接

基于计数的连接
EN

Stack Overflow用户
提问于 2020-04-15 03:34:15
回答 2查看 15关注 0票数 0

我的表格式为:

代码语言:javascript
运行
复制
City       Amount     Name
New York   10,000     Joe
Boston     10,000     Tom
New York   15,000     Jev

我正在寻找一个查询,它将返回至少有25个共同城市的人对的姓名和共同城市的确切数量。我的输出需要采用以下形式:

城市,Name1,Name2,计数(*)

我尝试了以下几种不同的变体:

代码语言:javascript
运行
复制
select t1.city, t1.name, t2.name, count(*) from T t1 join T t2
on t1.city = t2.city 
where count(*) > 25

但我没那么走运。请给我建议。

EN

回答 2

Stack Overflow用户

发布于 2020-04-15 03:48:01

你已经很接近了。您需要一个GROUP BYHAVING

代码语言:javascript
运行
复制
select t1.city, t1.name, t2.name, count(*)
from T t1 join
     T t2
     on t1.city = t2.city 
group by t1.city, t1.name, t2.name
having count(*) > 25;
票数 0
EN

Stack Overflow用户

发布于 2020-04-15 03:56:14

我相信你可以使用窗口函数来获得你想要的东西:

代码语言:javascript
运行
复制
SELECT city, name1, name2, count_of_cities
(
  select t1.city, t1.name as Name1, t2.name as Name2, count(*) OVER (PARTITION BY t1.name, t2.name) as count_of_cities 
  from T t1 join T t2
    on t1.city = t2.city 
) dt
WHERE dt.count_of_cities > 25;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61215738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档