如何仅按某个列值的前几个字母对 SQL 查询进行分组?
Posted
技术标签:
【中文标题】如何仅按某个列值的前几个字母对 SQL 查询进行分组?【英文标题】:How to group SQL queries by only first few letters of a certain column's values? 【发布时间】:2014-08-01 19:30:53 【问题描述】:我正在使用 Oracle sql 开发人员。我有一个名为data
的表,其中一个名为name
的列。之前,我想按名称对项目进行分组并获得总数,所以我这样做了:
select count(*), name from data group by name;
现在,我想对名称前四个字母相同的所有项目进行分组。例如,我想将名称等于 Chris 的所有行和名称等于 Christine 的所有行组合在一起。上面的查询中是否有任何编辑可以使它成为可能?
【问题讨论】:
【参考方案1】:只需使用substr()
函数:
select substr(name, 1, 4) as name4, count(*)
from data
group by substr(name, 1, 4);
【讨论】:
【参考方案2】:获取相同结果的备用查询。
SELECT name4, COUNT (*)
FROM (SELECT SUBSTR (name, 1, 4) AS name4 FROM data)
GROUP BY name4;
【讨论】:
以上是关于如何仅按某个列值的前几个字母对 SQL 查询进行分组?的主要内容,如果未能解决你的问题,请参考以下文章