Трябва да разчитам на отделен комбиниран номер за няколко колони в SQL IBM netteza Aiginity workbench.
id1 id2 id3 id4 id5 id6
NY 63689 eiof 394 9761 9318
NY 63689 secf 064 9742 78142
CT 39631 pfef 92169 9418 9167
CT 39631 bfbde 23457 10052 618146
Резултатът трябва да бъде
id1 id2 value
NY 63689 2
CT 39631 2
Трябва да намеря колко различни комбинации от id3, id4, id5, id6 за всеки отделен id2 и id2.
Моят SQL заявка:
SELECT id1, id2,
(
SELECT count(*) as dis_id_by_id1_id2
from
(
select distinct id3 , id4 ,id5 ,id6
FROM my_table
group by id1, id2
) t
)
from my_table
group by id1, id2
Имах грешка:
id3 must be GROUPed or used in an aggregate function
Ако групирах id3, id4, id5, id6. резултатът е погрешен.
брой (различен id3, id4) не е разрешен в IBM netezza.
Всяка помощ ще бъде оценена.
Отговори:
1 за отговор № 1Ако за пръв път напишете заявка за генериране на уникални комбинации, тогава можете да я използвате като вложена под-заявка.
След това е проста GROUP BY и COUNT ().
SELECT
id1,
id2,
COUNT(*) AS value
FROM
(
SELECT
id1, id2, id3, id4, id5, id6
FROM
myTable
GROUP BY
id1, id2, id3, id4, id5, id6
)
AS uniques
GROUP BY
id1,
id2
1 за отговор № 2
В Postgres можете да направите това с масиви и бройки:
select id1, id2,
count(distinct string_to_array(id3::text, "") || id4::text || id5::text || id6::text)
from table t
group by id1, id2;