SQL:如何仅使用在两列之间具有一定数量的唯一组合的数据?

SQL:如何仅使用在两列之间具有一定数量的唯一组合的数据?,sql,group-by,count,Sql,Group By,Count,假设我有三列,make、year和msrp,我只想在那里显示make/year组合的数量超过的行,例如,10。这是因为一些品牌只有一年的数据,我不想在我的数据中随机汽车品牌 我能得到每个品牌的年/品牌组合数,但我不知道如何包括其他列。 我有一个疑问: 选择制造、计数(不同年份) 来自汽车 按品牌分组 这就产生了这样的结果: make | count -------------- Honda | 13 Ford | 17 Bugatti | 3 ... 但我想要的是: make

假设我有三列,make、year和msrp,我只想在那里显示make/year组合的数量超过的行,例如,10。这是因为一些品牌只有一年的数据,我不想在我的数据中随机汽车品牌

我能得到每个品牌的年/品牌组合数,但我不知道如何包括其他列。 我有一个疑问:

选择制造、计数(不同年份)

来自汽车

按品牌分组

这就产生了这样的结果:

make    | count
--------------
Honda   | 13
Ford    | 17
Bugatti | 3
...
但我想要的是:

make    | count | year | msrp
----------------------
Honda   | 13    | 2001 | 100
Honda   | 13    | 2002 | 200
Honda   | 13    | 2003 | 300
Ford    | 17    | 2001 | 100
Ford    | 17    | 2002 | 200
Ford    | 17    | 2003 | 300
Bugatti | 1     | 2014 | 1000
并且仅显示计数>数字(可能为10)的行
*数据示例是由*

组成的,我怀疑您实际上不需要
计数(独立)
。因此,要获得信息:

SELECT make, count(DISTINCT year) OVER (PARTITION BY make) "Count", year, msrp
FROM cars
GROUP BY make, year, msrp
HAVING count(make) > 10 and count(year) > 10
select make, year, msrp,
       count(*) over (partition by make) as num_make_years
from cars;
如果要筛选,请使用子查询:

select my.*
from (select make, year, msrp,
             count(*) over (partition by make, year) as num_make_years
      from cars
     ) my
where num_make_years > 10;

什么是数据库管理系统?提供一些样品data@D-Shih使用data.world编写查询。我把csv放在我的github上让你访问,但这并没有达到我想要的效果。谢谢你的帮助!尝试通过添加多个partion