Re: Group by with insensitive order - Mailing list pgsql-general

From Tom Lane
Subject Re: Group by with insensitive order
Date
Msg-id 27265.1295472212@sss.pgh.pa.us
Whole thread Raw
In response to Group by with insensitive order  (Aram Fingal <fingal@multifactorial.com>)
Responses Re: Group by with insensitive order  (Aram Fingal <fingal@multifactorial.com>)
List pgsql-general
Aram Fingal <fingal@multifactorial.com> writes:
> Suppose I'm doing a group by query like the following:
> SELECT drug1, drug2, AVG(response)
> FROM data
> GROUP BY drug1, drug2

> The problem is that the same drug may appear sometimes as drug1 and sometimes as drug2.  So, for example, the
combination"aspirin, acetaminophen" may also appear as "acetaminophen, aspirin" and I want these grouped together in
thequery.  Is there a simple way to do this? 

Easy way is something like

SELECT LEAST(drug1, drug2), GREATEST(drug1, drug2), AVG(response)
FROM data
GROUP BY 1, 2

though it'd be a PITA to scale that to more than 2 drugs.

            regards, tom lane

pgsql-general by date:

Previous
From: frank joerdens
Date:
Subject: Re: debug_print_plan logs table alias used in join, not table name itself
Next
From: "Edmundo Robles L."
Date:
Subject: undefined symbol PQconnectionNeedsPassword referenced by file pg_ctl.o