みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

グループ関数と結合を同時に使うには?

はじめまして。昨日今日Oracleの世界に足を踏み入れたくらいの初心者で、javarowaと申します。

さっそく質問なのですが、たとえばTest1とTest2という表があり、Test1にはcustomer codeと
shop codeの二つの列、Test2にはshop codeとshop nameという二つの列があるとします。ここで主キーは
Test1はcustomer codeとshop codeの組み合わせ、Test2はshop codeです。この場合、select文で
shop code, shop name, およびshop codeごとのcustomer codeの数、という三つの情報を得るには
どのようにすればよいでしょうか(引っ張った情報はshop codeの昇順でソートします)。shop codeごとのcustomer codeは

select distinct shop code, count(customer code) from Test1 group by shop code order by shop code

で、また、shop codeに紐づくshop nameは

select distinct shop code, shop name from Test1 natural join Test2 order by shop code

で、それぞれ出ると思うのですが、この二つを同時に表すにはどうすればよいのかが分かりません。
(あるいはnatural joinだとダメなのでしょうか。そのあたりからしてあやふやです…)
非常に初歩的な質問で恐縮ですが、どなたかお教え願えないでしょうか。

投稿日時 - 2008-06-08 13:03:34

QNo.4084316

困ってます

質問者が選んだベストアンサー

こういうことでしょうか?

select
T2.shopcode,
T2.shopname,
COUNT(T1.customercode)
from
Test1 T1 inner join Test2 T2 on T1.shopcode = T2.shopcode
group by
T2.shopcode,
T2.shopname
order by
shopcode

投稿日時 - 2008-06-08 15:36:18

お礼

回答ありがとうございます!
そしてまた質問で恐縮なのですが、このgroup by句以下の解釈は
どのようになるのでしょうか。カウントするためにshopcodeで
グルーピングするのは分かるのですが、その次の管理会社名も
groub byされているのはなぜですか?
もしよろしければお願いします。

投稿日時 - 2008-06-09 08:01:39

ANo.1

このQ&Aは役に立ちましたか?

9人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問