Как выбрать и сгруппировать по части строки? - PullRequest
2 голосов
/ 25 мая 2010

Учитывая, что у меня есть данные, подобные следующим, как я могу выбрать и сгруппировать по частям строки?

Version  Users
1.1.1    1
1.1.23   3
1.1.45   1
2.1.24   3
2.1.12   1
2.1.45   3
3.1.10   1
3.1.23   3

Я хочу подвести итог пользователей, использующих версии 1.1.x, 2.2.x, 3.3.x и т. Д., Но я не уверен, как можно сгруппировать частичную строку в операторе select.

редактировать Что должны возвращать данные, это:

Version  Users
1.1.XX   5
2.1.XX   7
3.1.XX   4

Существует бесконечное количество переменных версий, некоторые в этом формате (основные, второстепенные, сборочные), некоторые являются основными, второстепенными, а некоторые просто основными, единственный раз, когда я хочу свернуть версии, это когда есть сборка.

Ответы [ 2 ]

4 голосов
/ 26 мая 2010
select rtrim(Version, '0123456789') ||'XX', sum(users) 
from Table
group by rtrim(Version, '0123456789')
1 голос
/ 25 мая 2010

Вы не указали, что хотите видеть после группировки по первой части, а также не указали длину каждого подраздела. Предположим, что вам нужно количество пользователей и что каждый раздел состоит не более чем из одного символа (то есть, нет ни 10.1.xxx, ни 10.10.xxx):

Select substring(Version, 1, 3), Count(*)
From Table
Group By substring(Version, 1, 3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...