/ / грешка за намиране на отделни колонии на многослойни колони в IBM netezza SQL таблица - sql, sql-server, database, ibm

Грешка при намирането на отделни колони на множество колони в таблицата SQL netezza SQL - sql, sql-server, database, ibm

Трябва да разчитам на отделен комбиниран номер за няколко колони в 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;