pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Masaru Sugawara <rk73@sea.plala.or.jp>
To: Janning Vygen <vygen@gmx.de>
Cc: pgsql-sql@postgresql.org
Subject: Re: Joining three data sources.
Date: Wed, 19 Jun 2002 23:09:02 +0900
Message-ID: <20020619230842.91E2.RK73@sea.plala.or.jp> (raw)
In-Reply-To: <200206191033.g5JAXnX19714@janning.planwerk6.local>
References: <200206191033.g5JAXnX19714@janning.planwerk6.local>

On Wed, 19 Jun 2002 12:33:47 +0200
Janning Vygen <vygen@gmx.de> wrote:

> ---------------------
> Result Inter Mailand vs. AC ROM 2:1
> 
> How can i select all games with their results in a tabel like this:
> (i dont care about the team names. this is easy to achieve of course, 
> my question is just about the goals)
> 
> team1_id|team2_id|goals1|goals2
>   1         2       2      1


 How about something like this:

SELECT go1.game_id, go1.team1_id, go1.team2_id,
          SUM(CASE WHEN go2.team_id = go1.team1_id
                     THEN go2.n ELSE 0 END) AS goals1,
          SUM(CASE WHEN go2.team_id = go1.team2_id
                     THEN go2.n ELSE 0 END) AS goals2
FROM  (SELECT game_id,
                    min(team_id) AS team1_id,
                    max(team_id) AS team2_id
              FROM goal 
            GROUP BY 1) AS go1,
          (SELECT game_id, team_id, count(*) AS n
               FROM goal
            GROUP BY 1, 2) AS go2
WHERE go1.game_id = go2.game_id
GROUP BY 1, 2, 3;



P.S.

As for Goal table, if it has a large number of the rows, you maybe
need to create a unique index on it.

CREATE UNIQUE INDEX idx_goal ON goal(game_id, team_id, minute);



Regards,
Masaru Sugawara





view thread (5+ messages)  latest in thread

Message-ID: <20020619230842.91E2.RK73@sea.plala.or.jp>
Permalink:  ../20020619230842.91E2.RK73@sea.plala.or.jp/
Also on:    postgresql.org/message-id/20020619230842.91E2.RK73@sea.plala.or.jp

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: rk73@sea.plala.or.jp, vygen@gmx.de
  Subject: Re: Joining three data sources.
  In-Reply-To: <20020619230842.91E2.RK73@sea.plala.or.jp>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox