色々試行錯誤していますが、データの出力が正しくできません。
本日、別の質問を記載したのですが、上手く質問がまとまっていなかったために再度投稿したします。
統括会社(テーブルA)ごとにお店の評価を出力したいと思っています。
ただ、上手くできなくて困っています。
========================
行いたいこと
========================
テーブルは3つあります。
テーブルAは統括会社のテーブル、Bは店情報、Cはお店の評価結果です。
行いたいのは、統括会社のグループコードごとに、統括会社傘下のお店の評価結果の合計を表示することです。
その際、期間(登録日)を指定して合計値を表示するといったことを行いたいです。
ただ、評価結果の合計を算出する際に、お店(店名コード)ごとに過去の評価結果に”○”がついた項目CDは、重複しない形で計算をしたいです。
例)
項目CD”1-1-1”で店名コード"AAA"の評価結果が"○"が2つ、店名コード"BBB"の評価結果が"○"が零(0)、店名コード"CCC"が"○"4つの場合
評価結果2として算出
=================
テーブル
=================
■テーブルA
→統括会社のテーブルです
グループコード グループ名
-------------------------------------
AAAA ああああ
BBBB いいいい
CCCC うううう
■テーブルC
→店情報のテーブルです
店名コード グループコード
-------------------------------------
ららら AAAA
せせせ BBBB
ししし CCCC
■テーブルB
→店の評価結果をもつテーブルです
項目CD 評価結果 店名コード 登録日
-------------------------------------
1-1-1 ○ ららら 2000-10-10
1-1-1 ○ ららら 2007-12-10
1-1-1 × せせせ 2006-12-16
1-1-1 ○ ししし 2009-04-16
1-2-1 ○ ららら 2004-10-16
1-2-1 ○ せせせ 2007-01-16
1-2-1 ○ ししし 2003-12-14
1-2-1 〇 ししし 2007-12-15
==============
SQL
==============
SQLは以下の通りです。
select テーブルA.グループコード,count(rtable.評価結果)、 from
(select 店名コード,項目CD,評価結果,登録日 from テーブルC
group by 店名コード,項目CD,評価結果,登録日
order by 店名コード,項目CD,評価結果,登録日) as rtable,テーブルA,テーブルB
where
テーブルA.グループコード = テーブルB.グループコード and
テーブルB.店名コード = rtable.店名コード
rtable.評価結果 = '○' and
rtable.登録日 between '2000-01-01' and '2009-01-01'
and テーブルA.グループコード ='AAAA'
===============
結果
===============
■理想の結果(店名コードと評価結果が同じ場合は合計しない)
グループコード 評価結果(合計)
----------------------------
AAAA 5
■現在の結果(店名コードと評価結果が同じ場合も合計してしまう)
グループ 評価結果(合計)
----------------------------
AAAA 7
何卒よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
質問内容に少し不備がありそうな気がしますが、
要点と提示されてるSQLだけを見て判断すると、
select テーブルA.グループコード,count(rtable.評価結果) from
(select 店名コード,項目CD,評価結果,MAX(登録日) from テーブルC
where 登録日 between '2000-01-01' and '2009-01-01' and 評価結果 = '○'
group by 店名コード,項目CD,評価結果)as rtable,テーブルA,テーブルB
where テーブルA.グループコード = テーブルB.グループコード and
テーブルB.店名コード = rtable.店名コード and テーブルA.グループコード ='AAAA'
group by テーブルA.グループコード
で良いのではないかと。
rtableのgroup byの条件に登録日が含まれていたために、
登録日が異なると、別レコードとしてカウントしてきていたのが、
想定と、実際の結果が異なっていた理由ではないでしょうか。
No.1
- 回答日時:
提示されたデータで、どれが集計対象か示せませんか?
例えば、次のような感じで。
項目CD 評価結果 店名コード 登録日
-------------------------------------
1 1-1-1 ○ ららら 2000-10-10←集計対象
2 1-1-1 ○ ららら 2007-12-10←#1と同一なので集計対象外
>お店(店名コード)ごとに過去の評価結果に”○”がついた項目CDは、重複しない形で計算をしたい
同じ店で、あるときは○、あるときは×といった評価をされることはあり得ないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Access(アクセス) Access クエリ 同一テーブル内 複数フィールドの同時集計のやり方について 1 2022/05/18 19:01
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- 統計学 統計に関する質問です 3 2022/05/19 20:21
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SELECT 文の NULL列は?
-
テーブルに存在しない列をselec...
-
MS Access から PostgreSQL へ...
-
PostgreSQLの断片化の状況を確...
-
複数テーブルにまたがるmax
-
SQLにて指定日付より前、かつ最...
-
単純なselectが遅くなるのです...
-
Insertで重複となったキーをさ...
-
update文で改行を入れる
-
テーブルリンク リンク元を知...
-
テーブル名をカラムとして取得...
-
一つ前に戻るには…
-
Accessのテーブルデータを一気...
-
Accessでデータシートに同じデ...
-
会社の飲み会の幹事になり、座...
-
Notion@リレーション値の取得...
-
件数の多い順にselect
-
うまくいきません教えてくださ...
-
外部キーだけのテーブル(主キ...
-
SQL、2つのテーブルで条件一致...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECT 文の NULL列は?
-
SQLにて指定日付より前、かつ最...
-
テーブルに存在しない列をselec...
-
SQLでUPSERTを一度に複数行やる...
-
単純なselectが遅くなるのです...
-
PostgreSQLの断片化の状況を確...
-
javaでデータベース上のテーブ...
-
2つのテーブルで引き算 postgres
-
PostgreSQL レコードからアイテ...
-
Postgresのデータ領域の拡張に...
-
Postgresqlのレポート機能について
-
VIEWのCOPYってできないんですか?
-
POSTGRESQL 検索スピードが遅い
-
Pythonで2つのデータ(キー無し...
-
備品管理のデータベースについて
-
最新レコードを抽出し外部結合...
-
重複を許すキーの構文がわかり...
-
データのマッチングです。お願...
-
テーブルにcsvファイルをインポ...
-
postgreSQL カラムの全ての値を...
おすすめ情報