SQL初心者のため、初歩的な質問だと思いますが、回答お願いします。
●健康診断テーブル
ID 回数 結果
―――――――
A 1 11
B 1 22
B 2 23
C 1 11
C 2 22
C 3 12
D 1 12
E 1 31
●個人情報テーブル
ID 所属
―――――
A 経理
B 総務
C 営業
D 営業
E 経理
上のような二つのテーブルがあります。
IDは人物の識別に使うIDで、同じIDなら同じ人を表しています。
健康診断テーブルの結果は、回数を重ねると変わってしまうこともあります。
この二つのテーブルから、所属ごとの結果を表示したいです。
上記の場合、以下のようなデータを出力できるようにしたいです。
所属 結果 人数
―――――――――
経理 11 1
経理 31 1
総務 23 1
営業 12 2
どのようにプログラムを組めばいいのでしょうか。
グーグル等で検索しても、自分の理解できる解答は見つかりませんでした。
(自分のプログラムレベルがかなり酷く、わからないがわからないのレベルです)
今は初回・2回・3回と回数を変更するSQL文は作成できています。
すいませんが、回答お願いします。
No.4ベストアンサー
- 回答日時:
間違ってるので訂正。
select B.所属,A.結果,count(*) as "人数"
from
(
select x.*,row_number() over(partition by ID order by 回数 desc) R
from 健康診断テーブル x
) A,
個人情報テーブル B
where R=1 and A.ID=B.ID
group by B.所属,B.結果
;
動きました!!本当にありがとうございます。
内容も間違っていないようなので一安心してました。
かなり複雑に見えます、どういう動きをしているかは後で勉強してみます。
No.3
- 回答日時:
自分が書くなら、探査が各1回ずつで済むので、こんな感じかな・・
select B.所属,count(*)
from
(
select x.*,row_number() over(partition by ID order by 回数 desc) R
from 健康診断テーブル x
) A,
個人情報テーブル B
where R=1 and A.ID=B.ID
group by A.ID,B.結果
;
No.2
- 回答日時:
select
A.所属, B.結果, count(*) as 人数
from
個人情報 A,
健康診断 B
where
A.ID = B.ID
and
B.回数 = (select max(回数) from 健康診断 C where C.ID = B.ID)
group by
A.所属, B.結果
こんな感じじゃないですか
ありがとうございます。これが一番簡単な方法だと思いました。
このような発想すら浮かばないくらい、初心者かつ不向きな脳内なので大変です。
ただ、なぜかこの方法でも動きませんでした。
説明不足で申し訳ありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- その他(データベース) accessでの請求管理について 2 2022/06/13 21:51
- JavaScript html javascriptにてWeb SQLを操作したい。 2 2022/12/16 17:43
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- その他(データベース) accessについて 2 2022/05/31 16:58
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- 教えて!goo 質問の回答にわざわざ、質問者のIDを使って「○○様」などと文中にやたらID連呼の回答をする人がなぜい 7 2023/02/07 13:10
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select insertで複数テーブルか...
-
select句副問い合わせ 値の個...
-
MERGE文を単体テーブルに対して...
-
SELECTの結果で同一行を複数回...
-
固定値を含む結合と複数テーブ...
-
SET句内で複数の条件を指定して...
-
oracleの分割delete
-
OracleのSQLについて質問があり...
-
unionの結果は集計はできないで...
-
SQLの検索条件について教えてく...
-
DELETE 文とEXISTSの使い方につ...
-
SQL GROUPで件数の一番多いレコ...
-
unionでマージした副問合せを結合
-
データベースの基礎かもしれま...
-
半角英数字混在データから数字...
-
SQLの書き方(チェックボックス)
-
他のテーブルを参照した値はupd...
-
SELECT * FROM `生徒名簿` INNE...
-
Accessで別テーブルの値をフォ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select句副問い合わせ 値の個...
-
select insertで複数テーブルか...
-
SELECTの結果で同一行を複数回...
-
MERGE文を単体テーブルに対して...
-
他のテーブルを参照した値はupd...
-
SET句内で複数の条件を指定して...
-
固定値を含む結合と複数テーブ...
-
SQL GROUPで件数の一番多いレコ...
-
oracleの分割delete
-
外部結合とor条件混在の記述方法
-
unionの結果は集計はできないで...
-
複数テーブルのMAX値の行データ...
-
unionでマージした副問合せを結合
-
集計後の数値が倍になる
-
構成比を求めるSQL文につきまして
-
COUNTの取得方法(?)について...
-
SQLの書き方(チェックボックス)
-
結合と副問い合わせの違い
-
DELETE 文とEXISTSの使い方につ...
おすすめ情報