Search Postgresql Archives

find the greatest, pick it up and group by

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I've a table like:

CREATE TABLE ordiniitem
(
  idordine numeric(18,0) NOT NULL,
  grupposped smallint,
  idart numeric(18,0) NOT NULL,
  qevasa integer,
  qfuoricat integer,
  qinris integer,
  qnonpub integer,
  qann integer,
  qord integer,
  qpren integer,
  qrichpag integer,
  qinriass integer,
  qinesa integer
);

I'd like to group by idordine, grupposped, idart.
For every row grouped that way, I'd like to pick the greatest of the
q* columns and insert:
idordine, grupposped, idart, name of the greatest(q*) in a new table.
I don't mind if more than one q* column is equal to greatest(q*). It
should pick up one, just one no matter which among the one equal to
greatest(q*).

I think this way works but it hurts my eyes. Any alternative
approach?

SELECT 
  ioi.idordine,
  ioi.grupposped,
  ioi.idart,
  -- ioi.quantita,
  case
   when ioi.qevasa =
    greatest(
      ioi.qevasa, ioi.qfuoricat,
      ioi.qinris, ioi.qnonpub, ioi.qann, ioi.qord, ioi.qpren,
      ioi.qrichpag, ioi.qinriass, ioi.qinesa )
    then 'evaso'
   when ioi.qfuoricat =
    greatest(
      ioi.qevasa, ioi.qfuoricat,
      ioi.qinris, ioi.qnonpub, ioi.qann, ioi.qord, ioi.qpren,
      ioi.qrichpag, ioi.qinriass, ioi.qinesa )
    then 'fuoricatalogo'
   when ioi.qinris =
    greatest(
      ioi.qevasa, ioi.qfuoricat,
      ioi.qinris, ioi.qnonpub, ioi.qann, ioi.qord, ioi.qpren,
      ioi.qrichpag, ioi.qinriass, ioi.qinesa )
    then 'in ristampa'

    -- ...

	end
FROM 
  ordiniitem ioi
  group by
	ioi.idordine,
	ioi.grupposped,
	ioi.idart,
	ioi.qevasa, ioi.qfuoricat, ioi.qinris,
	ioi.qnonpub, ioi.qann, ioi.qord, ioi.qpren,
	ioi.qrichpag, ioi.qinriass, ioi.qinesa
;

thanks

-- 
Ivan Sergio Borgonovo
http://www.webthatworks.it


-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux