I ‘m trying to group some data with the following query but I need also to add the uid column from a_import.veg table in the c_schema.worst_case table which contains unique values. As far as I know I can’t add it as usual cause group by doesn’t work properly as it takes all the unique ids in the new table… Is there any way to do this?
x
CREATE TABLE IF NOT EXISTS c_schema.worst_case
as SELECT back_str, ahead_str, substr(weather_case, 1, 4), min(min_dist) as min_dist
FROM a_import.veg
GROUP BY back_str, ahead_str, substr(weather_case, 1, 4)
ORDER BY back_str, ahead_str;
Advertisement
Answer
I am guessing you want distinct on
:
SELECT DISTINCT ON (back_str, ahead_str, substr(weather_case, 1, 4)) v.*
FROM a_import.veg v
ORDER BY back_str, ahead_str, substr(weather_case, 1, 4), min_dist;
(Select the columns you actually want.)
Actually, Postgres now supports LEFT()
, so you can shorten this to:
SELECT DISTINCT ON (back_str, ahead_str, LEFT(weather_case, 4)) v.*
FROM a_import.veg v
ORDER BY back_str, ahead_str, LEFT(weather_case, 4), min_dist;