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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google Cloud Platform

Google Cloud Platformは、Google社がクラウド上で提供しているサービス郡の総称です。エンドユーザー向けサービスと同様のインフラストラクチャーで運営されており、Webサイト開発から複雑なアプリ開発まで対応可能です。

Q&A

0回答

414閲覧

SQL サブクエリについて

chanoma

総合スコア10

Google Cloud Platform

Google Cloud Platformは、Google社がクラウド上で提供しているサービス郡の総称です。エンドユーザー向けサービスと同様のインフラストラクチャーで運営されており、Webサイト開発から複雑なアプリ開発まで対応可能です。

0グッド

0クリップ

投稿2022/03/30 02:50

現在、GCPにてSQLの練習をしております。

例えば、下記の★の部分にクエリ①を挿入したいときに、

select part, avg(a)
from high-territory-344913.practice220323.medical
group by part
having avg(a)>
(select avg(★)from high-territory-344913.practice220323.medical)

クエリ① (こちらは実行できることを確認しています)
select cast(substring(test, 2,3)as integer)
from high-territory-344913.practice220323.state

select part, avg(a)
from high-territory-344913.practice220323.medical
group by part
having avg(a)>
(select avg
(select cast(substring(test, 2,3)as integer)
from high-territory-344913.practice220323.state)
from high-territory-344913.practice220323.medical)
となると思うのですが、

Each function argument is an expression, not a query; to use a query as an expression, the query must be wrapped with additional parentheses to make it a scalar subquery expression at [6:10]
のエラーが出てしまいます。
(medicalテーブルのaの平均が、stateテーブルのtestの2,3,4文字目を数値化後の平均より大きい、
という条件を指定したい場合の例となります)

ここでお聞きしたいのですが、
上記エラーが出てしまっておりますが、構文が間違っているのでしょうか。解決法はありますでしょうか。

宜しくお願いいたします。

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

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

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

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

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

hoshi-takanori

2022/03/30 08:17 編集

★の部分にクエリ①を挿入する意味が分かりません。最終的にしたいことは何でしょうか? 〜 having avg(a)> (select avg(cast(substring(test, 2,3)as integer)) from high-territory-344913.practice220323.state) ってこと?
chanoma

2022/03/30 09:06

ご連絡ありがとうございます。 stateテーブルのtestの2,3,4文字目を数値化後の平均より,medicalテーブルのaの方が大きい、 という条件を指定したいと思っています。あくまでサブクエリの練習の一環です。 またselectが重複していたことに気づきました。しかし下記を実行しようとしても、 Syntax error: Expected end of input but got keyword FROM at [10:1]のエラーが出てしまいました。 select part, avg(a) from high-territory-344913.practice220323.medical group by part having avg(a)> (select avg ( cast(substring(test, 2,3)as integer)) from high-territory-344913.practice220323.state ) from high-territory-344913.practice220323.medical)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問