Size: a a a

2021 May 19

V

V in pro.elixir
Двумя запросами (1 = выбрать группы, 2 = выбрать строки по группам) и затем Enum.group_by
Можно запихнуть 1 в 2 как подзапрос
Для 1 нужен составной индекс из поля группы + поля даты или что ты там используешь. Этот же индекс пригодится и для 2.
Всякие CTE, оконные функции погоды не делают - потому что суть выборки всё равно сведётся к поиску сначала групп, потом строк в группах.

Вот если тебе понадобится в каждой группе выводить не все, а только часть строк - тут нужно CTE или оконная функция.
источник

B

Bogdan in pro.elixir
# fetch 10 messages
query_one =
     Email
     |> limit(10)

# get a threads of these messages
   thread_ids =
     query_one
     |> Repo.all()
     |> Enum.map(& &1.thread_id)

# fetch all the messages of the treads.
   final_query =
     Email
     |> where([e], e.thread_id in ^thread_ids)
     |> Repo.all()
     |> Enum.group_by(& &1.thread_id)



Короче вот через это я получаю желаемый output. Можно ли как-то оптимизировать?
источник

A ß in pro.elixir
то есть тебе нужны треды 10 последних имейлов?
источник

B

Bogdan in pro.elixir
да
источник

A ß in pro.elixir
сам придумал или бизнес подсказал?
источник

B

Bogdan in pro.elixir
ну реальная задача)
источник

N

Nekotari in pro.elixir
Чем больше скилл, тем меньше требований к языку. Знаю многих, кто живёт чисто с английским.
У меня 50/50. 2 года уже в Японии в языковой школе учусь.
Собеседовалась и на английском, и на японском.
Фирма японская, но тимлид американец.
Ракутен да, огромная фирма, но там как повезёт, все зависит от конкретного отдела. Знаю и тех, кому там шоколадно, и кто бежал сверкая пятками.
источник

A ß in pro.elixir
thread_ids = from(m in Email, select: m.thread_id, limit: 10)
источник

B

Bogdan in pro.elixir
а ну да точно))
источник

B

Bogdan in pro.elixir
затупил.
источник

B

Bogdan in pro.elixir
c одним Repo.all() можно это написать?
источник

A ß in pro.elixir
не знаю
источник

M

MrFlorius in pro.elixir
Можно по этому селекту еще один селект или джоин, если ч правильно понял задачу (читал по диагонали)
источник

B

Bogdan in pro.elixir
а как пустить селект по селкту?
источник

B

Bogdan in pro.elixir
и один раз Repo.all?
источник

M

MrFlorius in pro.elixir
from thread_ids …
источник

M

MrFlorius in pro.elixir
И в join его тоже можно если я правильно помню
источник

B

Bogdan in pro.elixir
я пробовал но как-то оно не получалось.
источник

B

Bogdan in pro.elixir
а может с join надо
источник

B

Bogdan in pro.elixir
попробую
источник