teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

13

不要文削除

2021/02/02 03:20

投稿

UmiSea2
UmiSea2

スコア1

title CHANGED
File without changes
body CHANGED
@@ -57,7 +57,6 @@
57
57
  例えば、サンプルデータでKJ_CODEが1234のとき、
58
58
  status1の数が KJ_CODE(1234)のPG_CODE数より大きいとstatus1を表示
59
59
  status2の数が1個以上のときはstatus2を表示、ということを想定しています。
60
- status3がKJ_CODE(1234)の数
61
60
 
62
61
  ### 発生している問題
63
62
 

12

タグの追加

2021/02/02 03:20

投稿

UmiSea2
UmiSea2

スコア1

title CHANGED
File without changes
body CHANGED
File without changes

11

誤字脱字修正

2021/02/02 03:18

投稿

UmiSea2
UmiSea2

スコア1

title CHANGED
File without changes
body CHANGED
@@ -8,6 +8,7 @@
8
8
  ...............
9
9
  ユーザーID
10
10
  KJコード
11
+ PGコード
11
12
  ステータスコード
12
13
  ..................
13
14
  ```SQL

10

サンプルのテーブル項目が足りなかったため一つ追加しました。

2021/02/02 03:10

投稿

UmiSea2
UmiSea2

スコア1

title CHANGED
File without changes
body CHANGED
@@ -15,6 +15,7 @@
15
15
  (
16
16
  USER_ID VARCHAR(10)
17
17
  ,KJ_CODE NUMBER
18
+ ,PG_CODE NUMBER
18
19
  ,STATUS_CODE NUMBER
19
20
  );
20
21
  ```
@@ -22,37 +23,40 @@
22
23
 
23
24
  このとき、ステータスコードには1~4のコードが登録されています。
24
25
  ```SQL
25
- INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 1234,1) ;
26
+ INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',1234,1111,1) ;
26
- INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 1234,2) ;
27
+ INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',1234,1112,2) ;
27
- INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 1234,3) ;
28
+ INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',1234,1113,3) ;
28
- INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 1234,4) ;
29
+ INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',1234,1114,4) ;
30
+ INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',1234,1115,1) ;
31
+ INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',1234,1116,1) ;
29
- INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 1234,2) ;
32
+ INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',1234,1117,2) ;
30
- INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 1234,3) ;
31
- INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 1234,1) ;
32
- INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 4321,1) ;
33
+ INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',4321,1111,1) ;
33
- INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 4321,1) ;
34
+ INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',4321,1112,1) ;
34
- INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 4321,2) ;
35
+ INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',4321,1113,2) ;
36
+ INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',4321,1114,2) ;
35
- INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 4321,3) ;
37
+ INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',4321,1115,3) ;
36
- INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 4321,2) ;
37
38
  ```
38
39
 
39
40
 
40
- そして、KJコードをGROUP BYで集約しつつKJコードをCOUNTした数と、
41
+ そして、KJコードをGROUP BYで集約しつつPG_CODEをCOUNTした合計数と、
41
42
  ステータスコード1~4のそれぞれのCOUNTした数をだし、
42
- ステータスコード1~4それぞれのCOUNTした数とKJコードをCOUNTした数、
43
+ ステータスコード1~4それぞれのCOUNTした数とPG_CODEをCOUNTした数、
43
44
  あるいはステータスコードの合計を例えば下記のように比較します。
44
45
 
45
- ステータスコードの値1の合計数 > KJコードの合計数
46
+ ステータスコードの値1の合計数 > PG_CODEの合計数
46
47
  ステータスコードの値1の合計数 < ステータスコードの値2の合計数
47
48
  ステータスコードの値3の合計数 > 0
48
- ステータスコードの値4の合計数 < KJコードの合計数
49
+ ステータスコードの値4の合計数 < PG_CODEの合計数
49
50
 
50
51
  そのうえで最終的に、
51
52
  ユーザーID、GROUP BYしたKJコード、CASEか何かで比較したステータスコード
52
53
  のデータを取得したいです。
53
54
 
54
- 想定は、KJ_CODEが仮に二種類あると二件のデータが取得される想定です。
55
- KJ_CODEごとにSTATUS_CODE の一番数が多いものを取得す想定です。
55
+ KJ_CODEごとにSTATUS_CODE の一番数が多いもの、あいは1個以上ある場合など
56
+ 例えば、サンプルデータでKJ_CODEが1234のとき、
57
+ status1の数が KJ_CODE(1234)のPG_CODE数より大きいとstatus1を表示
58
+ status2の数が1個以上のときはstatus2を表示、ということを想定しています。
59
+ status3がKJ_CODE(1234)の数
56
60
 
57
61
  ### 発生している問題
58
62
 
@@ -66,7 +70,7 @@
66
70
  SELECT
67
71
  ,USER_ID
68
72
  ,KJ_CODE
69
- ,COUNT(KJ_CODE)
73
+ ,COUNT(PG_CODE)
70
74
  ,COUNT(STATUS_CODE)
71
75
  FROM
72
76
  TEST

9

誤字脱字変更。

2021/02/02 03:09

投稿

UmiSea2
UmiSea2

スコア1

title CHANGED
File without changes
body CHANGED
@@ -51,8 +51,9 @@
51
51
  ユーザーID、GROUP BYしたKJコード、CASEか何かで比較したステータスコード
52
52
  のデータを取得したいです。
53
53
 
54
+ 想定は、KJ_CODEが仮に二種類あると二件のデータが取得される想定です。
55
+ KJ_CODEごとにSTATUS_CODE の一番数が多いものを取得する想定です。
54
56
 
55
-
56
57
  ### 発生している問題
57
58
 
58
59
  初歩的で申し訳ありませんが、一つのテーブルでGROUP BYしつつ、

8

余計な文を削除

2021/02/02 02:32

投稿

UmiSea2
UmiSea2

スコア1

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,3 @@
1
- 初めまして。初投稿となります。
2
- 不慣れな部分もありますが、なにとぞ皆様のお力をお借りできればと思いますので、
3
- 大変お手数ですが、ご回答のほどよろしくお願いいたします。
4
-
5
1
  データベースの環境はOracle 11gとなります。
6
2
 
7
3
  ### 前提・実現したいこと

7

誤字脱字変更

2021/02/01 23:40

投稿

UmiSea2
UmiSea2

スコア1

title CHANGED
File without changes
body CHANGED
@@ -67,12 +67,12 @@
67
67
  現在私自身は、下記のようなSQLの記述状況で手間取ってしまっています。
68
68
  ```SQL
69
69
  SELECT
70
- ユーザーID
70
+ ,USER_ID
71
- ,KJコード
71
+ ,KJ_CODE
72
- ,COUNT(KJコード)
72
+ ,COUNT(KJ_CODE)
73
- ,COUNT(ステータスコード)
73
+ ,COUNT(STATUS_CODE)
74
74
  FROM
75
- テストテーブル
75
+ TEST
76
76
  GROUP BY
77
- KJコード
77
+ KJ_CODE
78
78
  ```

6

コードスニペットの追加

2021/02/01 19:24

投稿

UmiSea2
UmiSea2

スコア1

title CHANGED
File without changes
body CHANGED
@@ -14,8 +14,33 @@
14
14
  KJコード
15
15
  ステータスコード
16
16
  ..................
17
+ ```SQL
18
+ CREATE TABLE TEST
19
+ (
20
+ USER_ID VARCHAR(10)
21
+ ,KJ_CODE NUMBER
22
+ ,STATUS_CODE NUMBER
23
+ );
24
+ ```
17
25
 
26
+
18
27
  このとき、ステータスコードには1~4のコードが登録されています。
28
+ ```SQL
29
+ INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 1234,1) ;
30
+ INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 1234,2) ;
31
+ INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 1234,3) ;
32
+ INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 1234,4) ;
33
+ INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 1234,2) ;
34
+ INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 1234,3) ;
35
+ INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 1234,1) ;
36
+ INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 4321,1) ;
37
+ INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 4321,1) ;
38
+ INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 4321,2) ;
39
+ INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 4321,3) ;
40
+ INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 4321,2) ;
41
+ ```
42
+
43
+
19
44
  そして、KJコードをGROUP BYで集約しつつKJコードをCOUNTした数と、
20
45
  ステータスコード1~4のそれぞれのCOUNTした数をだし、
21
46
  ステータスコード1~4それぞれのCOUNTした数とKJコードをCOUNTした数、

5

誤字脱字変更

2021/02/01 19:19

投稿

UmiSea2
UmiSea2

スコア1

title CHANGED
File without changes
body CHANGED
@@ -18,8 +18,8 @@
18
18
  このとき、ステータスコードには1~4のコードが登録されています。
19
19
  そして、KJコードをGROUP BYで集約しつつKJコードをCOUNTした数と、
20
20
  ステータスコード1~4のそれぞれのCOUNTした数をだし、
21
- ステータスコード1~4それぞれのCOUNTした数とKJコードをCOUNTした数、あるいはステータスコードの合計を
21
+ ステータスコード1~4それぞれのCOUNTした数とKJコードをCOUNTした数、
22
- 例えば下記のように比較します。
22
+ あるいはステータスコードの合計を例えば下記のように比較します。
23
23
 
24
24
  ステータスコードの値1の合計数 > KJコードの合計数
25
25
  ステータスコードの値1の合計数 < ステータスコードの値2の合計数
@@ -34,8 +34,8 @@
34
34
 
35
35
  ### 発生している問題
36
36
 
37
- 初歩的で申し訳ありませんが、一つのテーブルでGROUP BYしつつ上記のように二つの列をカウントするような記述が
37
+ 初歩的で申し訳ありませんが、一つのテーブルでGROUP BYしつつ、
38
- よくわかっていません。
38
+ 上記のうに二つの列をカウントするような記述がよくわかっていません。
39
39
  こういった場合は、やはり同一テーブルを副問い合わせなどするのでしょうか。
40
40
  組み方、考え方をご教授頂けますと幸いです。
41
41
 

4

コードスニペットの追加

2021/02/01 19:00

投稿

UmiSea2
UmiSea2

スコア1

title CHANGED
File without changes
body CHANGED
@@ -16,8 +16,7 @@
16
16
  ..................
17
17
 
18
18
  このとき、ステータスコードには1~4のコードが登録されています。
19
- そして、KJコードをGROUP BYで集約しつつ
19
+ そして、KJコードをGROUP BYで集約しつつKJコードをCOUNTした数と、
20
- KJコードをCOUNTした数と、
21
20
  ステータスコード1~4のそれぞれのCOUNTした数をだし、
22
21
  ステータスコード1~4それぞれのCOUNTした数とKJコードをCOUNTした数、あるいはステータスコードの合計を
23
22
  例えば下記のように比較します。
@@ -41,13 +40,14 @@
41
40
  組み方、考え方をご教授頂けますと幸いです。
42
41
 
43
42
  現在私自身は、下記のようなSQLの記述状況で手間取ってしまっています。
44
-
43
+ ```SQL
45
44
  SELECT
46
45
  ユーザーID
47
- KJコード
46
+ ,KJコード
48
- COUNT(KJコード)
47
+ ,COUNT(KJコード)
49
- COUNT(ステータスコード)
48
+ ,COUNT(ステータスコード)
50
49
  FROM
51
50
  テストテーブル
52
51
  GROUP BY
53
- KJコード
52
+ KJコード
53
+ ```

3

環境、現状の状況追記

2021/02/01 18:58

投稿

UmiSea2
UmiSea2

スコア1

title CHANGED
File without changes
body CHANGED
@@ -2,6 +2,8 @@
2
2
  不慣れな部分もありますが、なにとぞ皆様のお力をお借りできればと思いますので、
3
3
  大変お手数ですが、ご回答のほどよろしくお願いいたします。
4
4
 
5
+ データベースの環境はOracle 11gとなります。
6
+
5
7
  ### 前提・実現したいこと
6
8
  現在下記のようなテーブルにて、カウント数ごとのデータを取得したいと考えています。
7
9
  具体的には、1つの下記のようにテーブルにカラムがあります。
@@ -29,9 +31,23 @@
29
31
  ユーザーID、GROUP BYしたKJコード、CASEか何かで比較したステータスコード
30
32
  のデータを取得したいです。
31
33
 
34
+
35
+
32
36
  ### 発生している問題
33
37
 
34
38
  初歩的で申し訳ありませんが、一つのテーブルでGROUP BYしつつ上記のように二つの列をカウントするような記述が、
35
39
  よくわかっていません。
36
40
  こういった場合は、やはり同一テーブルを副問い合わせなどするのでしょうか。
37
- 組み方、考え方をご教授頂けますと幸いです。
41
+ 組み方、考え方をご教授頂けますと幸いです。
42
+
43
+ 現在私自身は、下記のようなSQLの記述状況で手間取ってしまっています。
44
+
45
+ SELECT
46
+ ユーザーID
47
+ KJコード
48
+ COUNT(KJコード)
49
+ COUNT(ステータスコード)
50
+ FROM
51
+ テストテーブル
52
+ GROUP BY
53
+ KJコード

2

誤字脱字変更

2021/02/01 18:52

投稿

UmiSea2
UmiSea2

スコア1

title CHANGED
File without changes
body CHANGED
@@ -14,7 +14,7 @@
14
14
  ..................
15
15
 
16
16
  このとき、ステータスコードには1~4のコードが登録されています。
17
- そして、KJコードをGroupByで集約しつつ
17
+ そして、KJコードをGROUP BYで集約しつつ
18
18
  KJコードをCOUNTした数と、
19
19
  ステータスコード1~4のそれぞれのCOUNTした数をだし、
20
20
  ステータスコード1~4それぞれのCOUNTした数とKJコードをCOUNTした数、あるいはステータスコードの合計を
@@ -26,12 +26,12 @@
26
26
  ステータスコードの値4の合計数 < KJコードの合計数
27
27
 
28
28
  そのうえで最終的に、
29
- ユーザーID、GruoupByしたKJコード、CASEか何かで比較したステータスコード
29
+ ユーザーID、GROUP BYしたKJコード、CASEか何かで比較したステータスコード
30
30
  のデータを取得したいです。
31
31
 
32
32
  ### 発生している問題
33
33
 
34
- 初歩的で申し訳ありませんが、一つのテーブルでGrupuByしつつ上記のように二つの列をカウントするような記述が、
34
+ 初歩的で申し訳ありませんが、一つのテーブルでGROUP BYしつつ上記のように二つの列をカウントするような記述が、
35
35
  よくわかっていません。
36
36
  こういった場合は、やはり同一テーブルを副問い合わせなどするのでしょうか。
37
37
  組み方、考え方をご教授頂けますと幸いです。

1

誤字脱字変更

2021/02/01 18:47

投稿

UmiSea2
UmiSea2

スコア1

title CHANGED
File without changes
body CHANGED
@@ -29,8 +29,6 @@
29
29
  ユーザーID、GruoupByしたKJコード、CASEか何かで比較したステータスコード
30
30
  のデータを取得したいです。
31
31
 
32
- ■■な機能を実装中に以下のエラーメッセージが発生しました。
33
-
34
32
  ### 発生している問題
35
33
 
36
34
  初歩的で申し訳ありませんが、一つのテーブルでGrupuByしつつ上記のように二つの列をカウントするような記述が、