2010年1月20日

[pgsql-jp: 40147] Re:countを含む結果と別テーブルを比較したい

柳本です。

select e.category, e.cnt, c.num
from
(select category, count(*) as cnt
from entry_table
group by category) e
left outer join category_table c

on (e.category = c.category)
order by e.category asc;

こんな感じでしょうか?

(2010/01/20 19:30), TAKENAKA, Akikazu wrote:
> 神奈川の竹中と申します。
> お世話になります。
>
> あるテーブルのcount(*)の結果と、別のテーブルのint型のデータを比較したいのですが、うまくいかずに困っております。
>
> 環境はこちらです。
> PostgreSQL 8.1.11 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC)
> 4.1.2 20070626 (Red Hat 4.1.2-14)
>
> 下記のような2つのテーブルがあります。
> CREATE TABLE entry_table (
> entry_id INT,
> category TEXT
> );
> CREATE TABLE category_table (
> category TEXT,
> num INT
> );
>
> entry_tableでは、各entry_idについて"A"〜"Z"のいずれかのcategoryが登録されています。
> category_tableでは、各categoryについて何件のentryの登録があるかをnumに記録しています。
> しかし、numの値が正確でない可能性が発生したので、実際の件数と比較をしようと思いました。
>
> 実際の件数は、下記で取得できます。
> SELECT DISTINCT category, count(*)
> FROM entry_table
> GROUP BY category;
>
> ここで取得するcountの値を、下記で取得できるnumと並べて比較したいのです。
> SELECT category, num
> FROM category_table;
>
> 下記をはじめ色々と試してみたのですが、どうにもうまくいきません。
> SELECT DISTINCT e.category, count(*), num
> FROM entry_table e
> LEFT OUTER JOIN category_table c
> ON e.category=c.category
> GROUP BY e.category;
>
> 各categoryと、それに対応するcountとnumを同時に取得したいのですが、何か根本的に間違っているのでしょうか…?
>
> 初歩的なことかもしれず恐縮なのですが、どなたかご教授いただければ幸いです。
> よろしくお願いいたします。
>
>


投稿者 xml-rpc : 2010年1月20日 20:08
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/92504
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。