[pgsql-jp: 35140] Re: テーブルの結合について教えてください
KAWAI,Takanori
GCD00051 @ nifty.ne.jp
2005年 3月 28日 (月) 22:50:14 JST
川合孝典です。
すでに解決されているかもしれませんが、こんな手もありかな
ということで...。
select
max(name) AS name,
SUM(CASE count WHEN 1 THEN score ELSE 0 END) as "count=1",
SUM(CASE count WHEN 2 THEN score ELSE 0 END) as "count=2",
SUM(CASE count WHEN 3 THEN score ELSE 0 END) as "count=3",
TRUNC(AVG(score)) As avg
FROM data, no
WHERE no.no=data.no
GROUP BY data.no;
=実行例=
root=> select * from no;
no | name
----+------
1 | aaa
2 | bbb
(2 rows)
root=> select * from data;
no | count | score
----+-------+-------
1 | 1 | 50
1 | 2 | 60
1 | 3 | 120
2 | 1 | 70
2 | 2 | 80
(5 rows)
root=> select data.no as no,
root-> max(name) AS name,
root-> SUM(CASE count WHEN 1 THEN score ELSE 0 END) as "count=1",
root-> SUM(CASE count WHEN 2 THEN score ELSE 0 END) as "count=2",
root-> SUM(CASE count WHEN 3 THEN score ELSE 0 END) as "count=3",
root-> TRUNC(AVG(score)) As avg
root-> FROM data, no
root-> WHERE no.no=data.no
root-> GROUP BY data.no;
no | name | count=1 | count=2 | count=3 | avg
----+------+---------+---------+---------+-----
1 | aaa | 50 | 60 | 120 | 76
2 | bbb | 70 | 80 | 0 | 75
(2 rows)
AVGの計算方法が分からなかったんで適当に。
----- Original Message -----
From: "切明 裕次" <y-kiriaki @ tec.co.jp>
To: <pgsql-jp @ ml.postgresql.jp>
Sent: Friday, March 25, 2005 7:04 PM
Subject: [pgsql-jp: 35131] Re: テーブルの結合について教えてください
> tomsonさん、小田切さん、中村さん、早速回答をいただきありがとうございます。
> 皆さんのお知恵を拝借して以下のようにしてみました。
>
> select user.name,
> d1.score as c1,
> d2.score as c2,
> d3.score as c3,
> (d1.score + d2.score + d3.score)/3 as avg
> from user
> left join (select * from data where count=1) as d1 using(no)
> left join (select * from data where count=2) as d2 using(no)
> left join (select * from data where count=3) as d3 using(no)
>
> 結果は以下のようになりました。
> name | c1 | c2 | c3 | avg
> ------+----+----+-----+-----
> aaa | 50 | 60 | 120 | 76
> bbb | 70 | 80 | |
>
> bbbの平均が出ないのですが、勉強がてら考えてみたいと思います。
> 本当にどうもありがとうございました。
===================================================
川合 孝典 (Hippo2000)
DBI日本語メーリングリスト管理人、Kansai.pm所属
kwitknr @ cpan.org GCD00051 @ nifty.ne.jp
http://homepage3.nifty.com/hippo2000/、http://www.hippo2000.info/
perldocの日本語情報ならperldocjp:翻訳してみませんか?
http://perldocjp.sourceforge.jp/
===================================================
pgsql-jp メーリングリストの案内