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

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

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

COUNT は、広く使用されているSQLの関数です。COUNT関数は、行数、もしくは配列のエンティティの数をカウントします。

SQL

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

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Q&A

解決済

2回答

1193閲覧

SQLの基礎問題! 2つのテーブルから選択したカラムと'COUNT'を使ったデータを表示したい

TechOtome

総合スコア2

COUNT

COUNT は、広く使用されているSQLの関数です。COUNT関数は、行数、もしくは配列のエンティティの数をカウントします。

SQL

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

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

0グッド

0クリップ

投稿2022/01/06 07:16

編集2022/01/06 07:17

SQLの基礎問題で教えてほしいことがあります。

添付図の「2つのテーブル(社員テーブル・部署名テーブル)」があるとき、
「所属部署コード・部署名・所属社員数」の3つのデータを表示をさせたいのですが上手くいきません。

やりたい内容は、
・社員テーブルからは「所属部署コード」を表示する
・部署名テーブルからは「部署名」を表示する
・社員テーブルの所属部署コードで「各部署の所属社員数を算出」して表示する
以上の3つです。

それぞれ1つずつのキューは記述できるのですが、
3つを一緒に表示するにはどうすれば良いのかが分かりません。
特にCOUNTを使用したとき、
エラーで「部署名テーブルから部署名」を表示することができませんでした。

どなたかご教授願います。

イメージ説明
===============

参考になるか分かりませんが、
個別に書いてみたクエリを記載しました。
(どちらも期待通りに表示されますが、
これを一つのテーブルにまとめて表示させる方法が分かりませんでした・・・)

①「社員テーブルの所属部署コード」と「部署名テーブルの部署名」を表示 SELECT  (所属部署コード),  (部署名) FROM   (社員テーブル),   (部署名テーブル) WHERE (所属部署コード) = (部署コード)
②所属部署コードを使って、各部署に所属する社員数を表示 SELECT (所属部署コード), COUNT(所属部署コード) AS 所属社員数 FROM (社員テーブル) GROUP BY (所属部署コード);

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

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

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

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

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

takasima20

2022/01/06 07:22

テーブル結合ってやったことありますか?
TechOtome

2022/01/06 07:42 編集

コメントありがとうございます。 OUTER JOINやUNIONは試してやってみたのですが、 どうしても「部署名カラム」が「GROUP BY 句に含まれません」というエラーが出て表示できませんでした。COUNT処理がない結合表示なら出来るのですが、COUNT処理があるとエラーになって、その対処が分からず悩んでいます。
takasima20

2022/01/06 07:43

サブクエリーってわかりますか?
TechOtome

2022/01/06 07:47

初見です!今、ググって初めて知りました。 (SQLに触れて1週間なもので、超初歩な質問ですみません・・・)
guest

回答2

0

解決済みですが、学習という事なので、他のパターンでの回答をしておきます。
※SQLは同じ結果を生むものでも、データの分布によっては記述を変える事で高速に動作するものもありますので。

相関副問い合わせのケース。

SQL

1select 部署コード, 部署名 2 , (select count(*) from 社員 where 所属部署コード=dpt.部署コード) as 所属社員数 3from 部署名 dpt

投稿2022/01/07 01:39

編集2022/01/07 01:42
sazi

総合スコア25327

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

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

0

ベストアンサー

こんばんわ。

まぁ始めて一週間だとSQLの考え方って難しいですよね。

SQLには、SELECT文の結果も表として扱うことのできる性質があります。

SQL

1-- 再掲②コード 2SELECT 3 所属部署コード, 4 COUNT(所属部署コード) AS 所属社員数 5FROM 6 社員テーブル 7GROUP BY 8 所属部署コード

この集約結果を部署名テーブルと結合してやります。
具体的には以下のようになります。

SQL

1SELECT 2 集約表.所属部署コード, 3 部署名テーブル.部署名, 4 集約表.所属社員数 5FROM 6( 7 SELECT 8 所属部署コード, 9 COUNT(所属部署コード) AS 所属社員数 10 FROM 11 社員テーブル 12 GROUP BY 13 所属部署コード 14) 集約表 INNER JOIN 部署名テーブル ON (集約表.所属部署コード = 部署名テーブル.部署コード) 15

社員テーブルの集約結果をまるで元からあった表のように扱うことができます。
SQLって面白くないですか?

投稿2022/01/06 08:00

srsnsts

総合スコア508

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

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

TechOtome

2022/01/06 08:08

なるほど! そういう考え方なんですね。ありがとうございます。 どうやって結合すれば良いのだろうと、ずっともどかしかったので本サイトでヒントを求めてしまいました。 解答を読んでスッキリです。ご丁寧にありがとうございました。 引き続き学習して頑張ります!!
srsnsts

2022/01/06 08:12

お役に立てたようで何よりです。 SQLは入り口は広いが奥が深い言語です。 学習頑張って下さい、応援しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問