2014-11-18 1 views
1

Мне нужно подсчитать количество отдельных комбинаций для нескольких столбцов в SQL IBM netteza Aiginity workbench.ошибка поиска четких кобинаций столбцов muiltiple в IBM netezza SQL-таблица

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.

My 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

Если вы сначала напишите запрос для создания уникальных комбинаций, вы можете использовать его как вложенный подзапрос.

Тогда это простая команда 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 
+0

спасибо! Я получил результаты, отличные от того, что мне нужно. Я открываю новое сообщение об этом. Любая помощь будет оценена по достоинству. – user3601704

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; 
Смежные вопросы