/ IBM netezza SQLテーブルで複数列の異なる組み合わせを見つけることのエラー/エラー - sql、sql-server、データベース、ibm

IBM NetezzaのSQLテーブル(SQL、SQL Server、データベース、ibm)の異なる列の区別を見つけるエラー

SQL IBM netteza Aiginityワークベンチで、複数の列に対して異なる組み合わせの数を数える必要があります。

 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

それぞれの異なるid2とid2に対して、id3、id4、id5、id6のいくつかの異なる組み合わせを見つける必要があります。

私の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をグループ化した場合結果は間違っています。

count(distinct 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

回答№2の場合は1

Postgresでは、これを配列とカウントで行うことができます。

select id1, id2,
count(distinct string_to_array(id3::text, "") || id4::text || id5::text || id6::text)
from table t
group by id1, id2;