首页 > 解决方案 > 按 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 。f68ac46c3155a0

我能得到的最接近的是:

select (city||age) as h, * from mytable order by h;

但我想要一个组号或哈希值,而不是显示city||age (在我的实际情况下可能很长)。

标签: sqlsqlitegroup-by

解决方案


您可以使用以下方法枚举组dense_rank()

select dense_rank() over (order by city, age) as grpnum, name, id
from t;

推荐阅读