Если вы используете MySQL, вы можете использовать GROUP_CONCAT
для объединения символов в строки для каждого целочисленного значения, затем COUNT
вхождения каждой строки:
SELECT str, COUNT(*) AS count
FROM (SELECT GROUP_CONCAT(str ORDER BY str SEPARATOR '') AS str
FROM data
GROUP BY i) d
GROUP BY str
ORDER BY str
Демонстрация на SQLFiddle
В Oracle вы можете использовать LISTAGG
:
SELECT str, COUNT(*) AS count
FROM (SELECT LISTAGG(str, '') WITHIN GROUP (ORDER BY str) AS str
FROM data
GROUP BY i) d
GROUP BY str
ORDER BY str
Демонстрация на SQLFiddle
В SQL Server 2017 и выше вы можете использовать STRING_AGG
:
SELECT str, COUNT(*) AS count
FROM (SELECT STRING_AGG(str, '') WITHIN GROUP (ORDER BY str) AS str
FROM data
GROUP BY i) d
GROUP BY str
ORDER BY str
Демонстрация по SQLFIddle
В PostgreSQL вы также можете использовать STRING_AGG
:
SELECT str, COUNT(*) AS count
FROM (SELECT STRING_AGG(str, '' ORDER BY str) AS str
FROM data
GROUP BY i) d
GROUP BY str
ORDER BY str
Демонстрация по SQLFiddle
Во всех случаях вывод:
STR COUNT
a 2
ab 1
aqz 1