sql - 按 2 列对项目进行分组
问题描述
假设我们有一个 Sqlite 表,其中包含:
name;city;age;id
Alice;New-York;25;13782749
Eve;Chicago;23;1938679
Bob;New-York;25;824697624
如何分组h=CONCAT(city,age)
:
h;name;id
group1;Alice;13782749
group1;Bob;824697624
group2;Eve;1938679
代替group1
, ,group2
可以为每个组使用1
, 2
,甚至是一个 hash 。f68ac46
c3155a0
我能得到的最接近的是:
select (city||age) as h, * from mytable order by h;
但我想要一个组号或哈希值,而不是显示city||age
(在我的实际情况下可能很长)。
解决方案
您可以使用以下方法枚举组dense_rank()
:
select dense_rank() over (order by city, age) as grpnum, name, id
from t;
推荐阅读
- c# - asp.net core 中的中间件只能在清除缓存的情况下工作
- json - 迭代数据框的所有行并从其数据中创建新对象
- reactjs - 获取数据,然后设置编辑数据的状态
- maven - Azure devops 构建后,SonarCloud 中未显示代码覆盖率
- maven - 如何确定在 pom.xml 中添加插件所需的属性是什么
- symfony5 - Symfony 5 书 RABBITMQ_DSN
- swift - 通用集合上的 Swift 编译器段错误
- reactjs - 反应存储组件的状态,道具不更新
- r - 处理大量行
- python - 如何编写while循环以使其在2个变量获得某些值时停止?(Python)