質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

3回答

615閲覧

SQL 最大値の取得(条件付き)

yanyan_tsukebo

総合スコア4

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2021/04/05 06:22

編集2021/04/05 06:31

前提・実現したいこと

SQLで以下の問いについて考えています。

・payから、entryごとの、salaryの最大値を表示する。ただしidが'P01'で無いもの。

自分としては以下のように考えたのですがエラーが出てしまいます。

発生している問題・エラーメッセージ

select entry,sum(salary) from pay group by entry having id != 'P01'; ERROR 1054 (42S22): Unknown column 'id' in 'having clause' また。payは以下のようなものです。 select * from pay; +-----+--------+-------+ | id | salary | entry | +-----+--------+-------+ | P01 | 900 | 2015 | | P02 | 850 | 2010 | | P03 | 980 | 2000 | | P04 | 1000 | 2000 | | P05 | 1050 | 1990 | | P06 | 1100 | 1990 | +-----+--------+-------+

該当のソースコード

select entry,sum(salary) from pay group by entry having id != 'P01';

試したこと

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

maisumakunさんの回答、yambejpさんの回答で解は得られていると思うので
自分はエラーの内容について。
ERROR 1064 (42000)はSQLの文法が誤っているときに発生するエラーです。
エラー文後ろの

for the right syntax to use near '' at line 1

は、**「1行目の''で囲まれている文の近くで正しい文法が使われていない」**という意味です。
頻出のエラーですので覚えておけば再度発生しても自分で対応、解決出来るかと。

投稿2021/04/05 06:34

編集2021/04/05 06:39
K_3578

総合スコア1282

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

K_3578

2021/04/05 06:37

よくよく見直したらエラー原因違うところだった・・・。orz
yanyan_tsukebo

2021/04/05 08:48

そこも普通に間違えてたので助かりました!ありがとうございました。
K_3578

2021/04/05 08:49

そこに関しては私より先にmaisumakunさんが回答なさっていたのでそちらに言って頂ければと。
guest

0

ベストアンサー

なぜhaving・・・普通にwhere句では?

select entry,max(salary) from pay where id<>'P01' group by entry

あとは期待する結果次第

投稿2021/04/05 06:33

yambejp

総合スコア115010

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yanyan_tsukebo

2021/04/06 00:32

ありがとうございます! whereとhavingの使い分けが理解できていないのでしっかり学習しようと思います。
guest

0

havingidの間が全角スペースになっているようです。

投稿2021/04/05 06:25

maisumakun

総合スコア145208

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yanyan_tsukebo

2021/04/05 06:28

ご指摘ありがとうございます! そこを直しても同じエラーが出てしまいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問