Объединить строки в список в PrestoSQL

Добавляя к верхнему проголосовавшему ответу и многим выше, подчеркивая «более общий, лучший», я хотел бы копать немного больше.

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

Давайте посмотрите в исходный код:

В Map у нас есть метод containsKey(Object key):

boolean containsKey(Object key);

JavaDoc:

boolean java .util.Map.containsValue (значение объекта)

Возвращает true, если эта карта отображает одну или несколько клавиш в указанное значение. Более формально возвращает true тогда и только тогда, когда эта карта содержит хотя бы одно сопоставление со значением v, таким как (value==null ? v==null : value.equals(v)).

Параметры: значение

значение, наличие которого на этой карте должно быть указано

Возвращает: true

, если это отображение отображает одну или несколько клавиш в указанное значение

Throws:

ClassCastException - если значение имеет неправильный тип для эта карта (необязательно)

NullPointerException - если указанное значение равно null, и эта карта не допускает нулевые значения (необязательно)

Для ее реализации требуются ее реализации, [7] HashMap:

public boolean containsKey(Object key) {
    return getNode(hash(key), key) != null;
}

Оказывается, HashMap использует hashcode для того, чтобы проверьте, содержит ли эта карта ключ. Таким образом, он имеет преимущество алгоритма хеширования.

0
задан Telepresence 27 March 2019 в 05:13
поделиться

1 ответ

Попробуйте использовать ARRAY_JOIN с ARRAY_AGG:

SELECT
    id1,
    id2,
    ARRAY_JOIN(ARRAY_AGG(actions), ',') actions
FROM yourTable
GROUP BY
    id1,
    id2;
0
ответ дан Tim Biegeleisen 27 March 2019 в 05:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: