質問: HB.会社CD) GROUP BY 会社名, 従業員名)T1, (SELECT COUNT(従業員名) as syain, 会社名 FROM 表B)T2 という感じで書いてみたのですが、書き直しても書き直してもエラーが出てしまって出力できません・・・。 どうすればよいのでしょうか? 会社CD=CHAR 従業員名=VARCHAR2 会社名=CHAR
回答: これでいかがでしょう。 ``` select 表A.会社名,表B.従業員名 from 表B,表A, ( select 会社CD,rank() over(order by 従業員数 desc,会社CD) as ランク from (select 会社CD,count(*) 従業員数 from 表B a group by 会社CD) ) 表C where 表A.会社CD = 表B.会社CD and 表A.会社CD = 表C.会社CD and ランク = 1; ``` rank関数で、従業員が多い会社CD、従業員が同じ場合は会社CDの若い番号を取得します。 ランクの引数を変えれば2番目に多い会社の一覧も出せます。