首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLite如何根据自定义规则对数据进行分组

SQLite如何根据自定义规则对数据进行分组
EN

Stack Overflow用户
提问于 2020-09-11 06:20:17
回答 1查看 95关注 0票数 2

我有一张桌子如下。如果我对name字段执行组操作,那么b的键是11,但我需要离开的是12,因为12已经出现在其他记录中了。在不使用max聚合方法的情况下,我应该做些什么来实现这个结果?

介绍了表的含义,键-12还提供了名称a,名称-b,键-11只提供名称-b的名称-c,有三个键可以提供名称-c,所有这些都不重复。

代码语言:javascript
复制
|name|key|
| a | 12 |
| b | 11 |
| b | 12 |
| c | 15 |
| c | 14 |
| c | 17 |
....

我希望透过小组取得的结果是:

代码语言:javascript
复制
|name|key |
| a  | 12 |
| b  | 12 |
| c  | 15 | 

要通过name字段执行group by操作,b需要保留key-12,因为key-12同时提供了名称a和名称b,因此不需要key-11。

对于name-c,有三个键可以提供name-c,所有这些都不会重复,所以让我们使用第一次出现的那个键。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-11 07:43:05

假设key对每个name都是唯一的,则可以使用COUNT()ROW_NUMBER()窗口函数:

代码语言:javascript
复制
select name, key
from (
  select *, row_number() over (partition by name order by counter desc, rowid) rn
  from (
    select *, rowid, count(*) over (partition by key) counter
    from tablename
  )
) 
where rn = 1 

演示

结果:

代码语言:javascript
复制
> name | key
> :--- | --:
> a    |  12
> b    |  12
> c    |  15
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63841740

复制
相关文章

相似问题

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