Oracle SQLスクリプトに問題があります。ほとんどの出版物ですべての著者(ログイン)を選択する必要があります。同じ数のパブリケーションのログインがさらにある場合は、それらをすべて選択する必要があります。SQL ORACLE - MAX()を使用しているほとんどのパブリケーション(ほとんどの行)の作成者を選択
SELECT P.LOGIN, COUNT(*)
FROM PISE P
GROUP BY P.LOGIN, HAVING COUNT(*) >= MAX(PUBLICATIONS)
(
SELECT COUNT(*) AS PUBLICATIONS
FROM PISE P
GROUP BY P.LOGIN
);
ORA-00933が生じ:SQLコマンドが正常に
を終了していない list of publications looks like this:私は...これまでのところ、私はこのような何かをやって試してみましたMAX()機能を使用するが必要
または
SELECT P.LOGIN, COUNT(*) as PUBLICATIONS
FROM PISE P
GROUP BY P.LOGIN HAVING PUBLICATIONS >= MAX(PUBLICATIONS);
解像度"出版物":ORA-00904でulting無効な識別子
または
SELECT P.LOGIN, COUNT(*)
FROM PISE P
WHERE COUNT(*) IN (
SELECT MAX(COUNT(*))
FROM PISE
);
ORA-00934が生じ:グループ機能はここでは許可されていません。 (JmenoとPrijmeniカラムなし) This is the result I am looking for
。
なぜ出版物> = MAX(Publications)からではなく=(等しいですか)?もう1つの試みでは、なぜ "IN"の代わりにCOUNT(*)IN(SELECT MAX ...)と=(等価ではない)ですか?どちらの場合も、=が最も理にかなっています。また、著者のファーストネームとラストネームは元のテーブルにはありません。どのようにそれらを出力に表示しますか?おそらく結合が必要になるでしょう(最初と最後の名前が別のテーブルにある場合は、そうでなければなりません)が、それに関する情報はありませんでした。 – mathguy
はい、> =を変更すると違いはありません。私がそこにあったものが、何とかそれを解決しようとしている間、私は心に来たすべてを試しました。 changin IN to =は同じ結果で終了します。 EDIT:名と姓は別のテーブルに含まれていますが、後で追加しますが、解決する必要があるものではないので無視します。言い換えれば、私は問題の根本に私の問題を単純化しようとしました。 – sKyTzi
右 - 私はクエリを修正することを提案していませんでした(結局のところ、> =と "IN"は完全に合法です - 非効率的です)。最初のクエリの後ですぐにサブクエリを開始するため、クエリが失敗します。 WHERE句はそこにあるはずですが、WHERE句は存在しません。 GROUP BY句の後にのみ別名PUBLICATIONSが追加されるため(SELECT句で)、GROUP BY句の後に識別子 "PUBLICATIONS"(まだ)が存在しないため、2番目のクエリは失敗します。 – mathguy