2016-12-28 6 views
0

Имея тщательное исследование Google, похоже, что Vertica DB просто не поддерживает счет (отчет) over(), поскольку он вызывает: "ОШИБКА 4249: Только MIN/MAX разрешено использовать DISTINCT ... MIN/MAX разрешено использовать DISTINCT «Использование аналитического графа (отличного) на Vertica не поддерживается

Я ищу легкую прогулку для этого.

Между тем, я использую объединения или вложенные запросы.

Например:

select campaign_id, segment_id, COUNT(DECODE(rank, 1, 1, NULL)) over() 
    from (select campaign_id, segment_id, row_number() over(partition by segment_id) rank 
      from cs) 

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

Спасибо!

(Работа в HPE? Пожалуйста, осуществить это, как вы сделали для всех распространенных аналитических funcitions!)

+0

Ваше решение в порядке. Я имею в виду, я бы не использовал 'decode', но это очень разумное решение проблемы. –

ответ

0

я должен был сделать что-то подобная структуру вложенного подсчета для подсчета различных значений совокупно, в диапазоне дат. Оно сводилось к подобному Собрав из ROW_NUMBER() = 1 строк, хотя я использовал случай:

COUNT(CASE WHEN rank = 1 THEN userID END) OVER (...) 

Это было не очень, чтобы смотреть на, но это было милосердно не медленно.

мне нужно придумывать трюки по всему пути

Да, я думаю, что просто происходит, когда вы столкнетесь с отсутствующими возможностями.