task_name task_label task_response
note_1 task_1 task_label_1 task_response_1
note_1 task_2 task_label_2 task_response_2
note_2 task_3 task_label_1 task_response_3
note_2 task_3 task_label_2 task_response_4
note_2 task_4 task_label_5 task_response_6
note_3 task_3 task_label_1 task_response_3
Output:
id notes
unique-uuid-1 {note_1}
unique-uuid-2 {note_2, note_3}
Принцип следующий: если какой-нибудь task_name и task_response одной note, совпадает с task_name и task_response у другой note, то объединить эти note в одну группу.
Соответственно, на выходе могут быть только уникальные значения note, которые не встречаются в других строках. Не могу сообразить, как это проделать.
И второй вопрос. Насколько будет быстрым поиск по колонке notes, если там будут тысячи, десятки тысяч записей? В момент времени хотелось бы вывести unique-uuid-* для конкретной note. Либо можно сделать эту группировку как-то иначе?
По поводу нумерации записей - посмотрите в сторону row_number() , если я Вас правильно понял, конечно По поводу группировки, как я понимаю, Вам надо следующее select row_number(), array_agg(note) from <table_name> group by task_name, task_response Повторюсь, если я Вас правильно понял
Начните с функции, выдирающей префикс из task_name, и префикс из task_response — чтобы потом по этим префиксам группировать
Значения полей здесь приведены в виде примеров для понимания, там строковые значения могут быть какие угодно
На данный момент вроде такой запрос и есть, но результат работы получается не таким как должен быть
В частности, выходит так:
Может в каком-то другом эти данные для note хранить, авось что лучше выйдет..
Обсуждают сегодня