Eu tenho a seguinte consulta:
select programVersion, count(programVersion)
from records R
inner join Programs P
on P.programID=R.usageProgramID
where programName="word"
group by programVersion;
Resultados:
+----------------+-----------------------+
| programVersion | count(programVersion) |
+----------------+-----------------------+
| 12.0.0 | 1 |
| 12.2.0 | 32190 |
| 12.2.3 | 20 |
| 12.2.6 | 3990 |
| 12.2.8 | 13128 |
| 12.3.1 | 114 |
| 12.3.2 | 4 |
| 12.3.4 | 20 |
| 14.0.0 | 57 |
| 14.1.0 | 86587 |
| 14.1.3 | 44 |
| 14.1.4 | 728 |
| 14.2.0 | 42 |
| 14.2.2 | 130 |
| 14.2.3 | 88219 |
| 14.2.5 | 66 |
| 14.3.0 | 126 |
| 14.3.1 | 36 |
| 14.3.2 | 74 |
+----------------+-----------------------+
Para este propósito, eu realmente não me importo com os incrementos de versão secundária. O que realmente me interessa são as diferenças nos incrementos principais. Existe uma maneira de obter os resultados combinados após o primeiro período?
Saída de Exemplo
+----------------+-----------------------+
| programVersion | count(programVersion) |
+----------------+-----------------------+
| 12 | total of 12's |
| 14 | total of 14's |
+----------------+-----------------------+
Você pode usar a
SUBSTRING_INDEX()
função para pegar a parte antes do primeiro ponto e depois agrupar:O acima pode não ser o mais eficiente em uma mesa grande. Se você tiver índices que sua versão usa e são eficientes, você pode usá-los como uma tabela derivada e, em seguida, agregar com a função substring: