Re: Group By aggregate string function

Поиск
Список
Период
Сортировка
Искать
От
Campbell, Lance
Тема
Re: Group By aggregate string function
Дата
Msg-id
730D7ADD-A08D-4EA2-A4B0-7C7EF7ABC4CB@illinois.edu
Ответ на
Список
Дерево обсуждения
Group By aggregate string function "Campbell, Lance" <lance@illinois.edu>
Re: Group By aggregate string function "Campbell, Lance" <lance@illinois.edu>
Re: Group By aggregate string function "David G. Johnston" <david.g.johnston@gmail.com>
Re: Group By aggregate string function Martin Stöcker <martin.stoecker@stb-datenservice.de>

Correction. I had two typos.  I did not want to confuse someone.

 

PostgreSQL 10.x

 

Below is my situation.  I need some kind of aggregate string function that when it finds multiple string values it will order them based on a preferred preference.  Example:  “admin”, then “manager” then “…”. 

 

Table T

fk_id int – foreign key

user_id  text

role text  - possible values could be “admin” and “manager”

 

Primary key (fk_id, user_id, role)

 

Sample data:

  1. lance  admin

1     lance manager

87   bob   manager

98   tom admin

104 tom manager

 

SELECT fk_id, user_id, some-aggregate-string-function(role, “admin”, “manager”)  FROM T  WHERE user_id = ‘lance’ GROUP BY fk_id, user_id;

 

When selecting data if there are multiple rows within the group by then aggregate the result based on a priority for role of “admin” first, “manager” second, etc.

 

Expected Result:

1 lance admin

 

Ignores the second record with lance in it because the first record contained admin.

 

THANKS!

 

 

From: Lance Campbell <lance@illinois.edu>
Date: Thursday, February 21, 2019 at 1:00 PM
To: "pgsql-sql@postgresql.org" <pgsql-sql@postgresql.org>
Subject: Group By aggregate string function

 

PostgreSQL 10.x

 

Below is my situation.  I need some time of aggregate string function that when it finds multiple string values it will order them based on a preferred preference.  Example:  “admin”, then “manager” then “…”. 

 

Table T

fk_id int – foreign key

user_id  text

role text  - possible values could be “admin” and “manager”

 

Primary key (fk_id, user_id, role)

 

Sample data:

  1. lance  admin

1     lance manager

87   bob   manager

98   tom admin

104 tom manager

 

SELECT fk_id, user_id, some-aggregate-string-function(role, “admin”, “manager”)  FROM T  WHERE user_id = ‘lance’ GROUP BY fk_id, user_id;

 

When selecting data if there are multiple rows within the group by then aggregate the result based on a priority for role of “admin” first, “manager” second, etc.

 

Expected Result:

1 lance admin

 

Ignores the second record with lance in it because it contains admin.

 

THANKS!

 

 

LANCE CAMPBELL

Software Architect

 

Web Services

Public Affairs

Contact the Webtools Team

217.333.0382

lance@illinois.edu

 

 

 

Under the Illinois Freedom of Information Act any written communication to or from university employees regarding university business is a public record and may be subject to public disclosure.

 

В списке pgsql-sql по дате отправления
От: Campbell, Lance
Дата:
От: David G. Johnston
Дата:
FAQ