franckstifler

franckstifler

Use alias field in select ecto

Hi. I have a query that looks like this:

from p in Payment, group_by: fragment("extract(hour from ?) as hour", p.inserted_at),
select: {fragment("max(?)", p.amount)}
How can I get my group_by field (hour) in the select using this query?

Most Liked

1player

1player

Don’t quote me on this, but I don’t think it is possible.

I have a vague recollection of trying to order some results depending on the result of an expression in the select, and the only way to make it work was to repeat the expression verbatim in the order_by clause.

Unless I’m wrong, you’ll have to do

from p in Payment, group_by: fragment("extract(hour from ?) as hour", p.inserted_at),
  select: {
    fragment(max("?", p.amount)), 
    fragment("extract(hour from ?) as hour", p.inserted_at)
  }

and hope PostgreSQL is smart enough to compute that expression only once. Alternatively you can write a raw query.

Last Post!

franckstifler

franckstifler

Definitely. that was the only way around I could find! Thanks for your detailed feedback.

Where Next?

Popular in Questions Top

vegabook
I’m brand new to Phoenix and I have stripped one of the demo applications to the bone. I just want to get an svg up on the screen. Here i...
New
9mm
I am constructing a JSON object (map) and I need to conditionally set a field. I’m trying to write proper elixir-way code… and I’m at a l...
New
komlanvi
Hi everyone, I was playing with phoenix liveView but I run into an issue. I have a form and want to validate each input text when the te...
New
aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New
freewebwithme
Using vs code and installed ElixirLS: support and debugger. And I got an error popped up on start up says Failed to run ‘elixir’ comma...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New

Other popular topics Top

nobody
Hi! In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir? Searched the docs for ip address and the web, no good results. Thanks!
New
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 records...
New
JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1144 54921 245
New
lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New
joeerl
Hello again - after a longish gap I’ve decided I really must dig into Elixir and see what’s been happening here - so I have a few questio...
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New

We're in Beta

About us Mission Statement