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

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

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

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

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

Q&A

2回答

820閲覧

COUNTした結果をSUMする(SQL)には?

kakedashi_SE

総合スコア0

Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

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

0グッド

0クリップ

投稿2022/04/25 08:23

編集2022/04/25 09:36

SQLで、COUNTした結果をSUMしたいです。

現在、「ユーザーID」「ユーザー名」「会員ランク」「ステータス」
というカラムがあるテーブルで、
・ユーザーがサイトにログインできないという不具合が起きた。
・会員ランクは4種類あり、そのうちの「白金」ランクのユーザーは
全員不具合の対象だった(ステータス状況は重複もあるが基本バラバラ)。
・その他3種類のランクのユーザーも、一部不具合の対象だった。
なお、不具合の対象であるユーザーは、もれなく白金ランクのユーザーと
ステータスが同じ状況である。

というシチュエーションになっています。
登録されているユーザー数は77件で、
そのうち「白金」ランクのユーザーは10件、
「白金」ランク以外で不具合が起きているのが22件で、
不具合の起きていないユーザーは全部で45件という設定になっています。

そこで、不具合が起きていないユーザーの
「ステータス(STATUS)」ごとの件数は以下のクエリで出しました。

【不具合の対象外であるユーザー】
SELECT STATUS , count(*)
FROM テーブル名
WHERE STATUS NOT IN
(SELECT STATUS FROM テーブル名
WHERE GRADE='白金' )
AND GRADE <> '白金'
GROUP BY STATUS

【結果】
STATUS CNT
756h54 1
87935w 2
7856q3 3……(後略)

結果の「CNT」の合計値が45件なのはわかるのですが、
それをSUMする(1+2+3+……=45にする)
にはどのようなクエリを書けばいいのでしょうか。

使用しているのは2022 Oracle · Live SQL 22.1.3, running Oracle Database 19c Enterprise Edition - 19.8.0.0.0です。

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

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

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

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

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

m.ts10806

2022/04/25 08:26

想定のDB、バージョンを記載し、質問タグを追加してください
kakedashi_SE

2022/04/25 08:31

使用しているのは 2022 Oracle · Live SQL 22.1.3, running Oracle Database 19c Enterprise Edition - 19.8.0.0.0 です。
m.ts10806

2022/04/25 08:41 編集

質問本文に追記を。質問タグ追加は特に。タグ絞り込みで見ている人は多いので
kakedashi_SE

2022/04/25 08:43

すみません、初心者なのでお教えいただきたいのですが、 2022 Oracle · Live SQL 22.1.3, running Oracle Database 19c Enterprise Edition - 19.8.0.0.0を 使用している場合タグはどれを追加すればよろしいのでしょうか。
kakedashi_SE

2022/04/25 09:35

ありがとうございます。追加いたします。
guest

回答2

0

Rollupちゃんと理解してる?

以下の3つは使い方を覚えておくと良いでしょう。
GROUP BY ROLLUP
GROUP BY CUBE
GROUP BY GROUPING SETS
ぐぐってね。

投稿2022/04/25 21:35

Orlofsky

総合スコア16415

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

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

0

GROUP BYしなければ合計カウント数が得られませんか?
それともgroup by した上で集計行がほしいのでしょうか?
もしそうならrollup処理になります

投稿2022/04/25 08:40

編集2022/04/25 08:43
yambejp

総合スコア114825

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

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

kakedashi_SE

2022/04/25 08:47

GROUP BY STATUSの一文がないと 「ORA-00937: not a single-group group function」と出てしまいます… GROUP BYを使わないでステータスごとの件数を出すことはできるのでしょうか?
yambejp

2022/04/25 08:49

具体的にどういったSQLを実行しました?
kakedashi_SE

2022/04/25 08:55

質問文に載せたクエリからGROUP BYを削除したクエリを実行しました。 SELECT STATUS , count(*) FROM テーブル名 WHERE STATUS NOT IN (SELECT STATUS FROM テーブル名 WHERE GRADE='白金' ) AND GRADE <> '白金'
yambejp

2022/04/25 08:55

group byしないのですから「STATUS , 」は外してください
kakedashi_SE

2022/04/25 09:08

なるほど!ありがとうございます。 ちなみにGROUP BYしてからSUMしたい場合のrollupは どのように記載すればよいのでしょうか…
m.ts10806

2022/04/25 09:21 編集

失礼、間違えました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問