はじめまして。
SQLで部分的にGROUP BYで集計したいのですが、
どうもしっくりくるSQLがかけません。
多分CASEあたりを使うと綺麗で高速なSQLがかけると思っています。
皆様のお知恵をお借りしたく投稿しました。
具体的には以下のような出納帳データで
出納帳
日付 金額
2012/8/20 1000
2012/8/20 2000
2012/8/21 -1000
2012/8/21 -2000
2012/8/22 3000
2012/8/23 4000
2012/8/24 -3000
2012/8/24 -4000
2012/8/27 5000
↓集計
日付 金額
2012/8/20 1000
2012/8/20 2000
2012/8/21 -3000(-1000と-2000を集約)
2012/8/22 3000
2012/8/23 4000
2012/8/24 -7000(-3000と-4000を集約)
2012/8/27 5000
というように、マイナスの金額は集約してしまいたいのですが、どのようなSQLが最適でしょうか?
とりあえず、UNIONかなと思い、
(SELECT 日付, 金額
FROM 出納帳
WHERE 金額>=0
UNION ALL
SELECT 日付, 金額
FROM 出納帳
WHERE 金額<0
GROUP BY 日付 )
ORDER BY 日付
とプラス金額とマイナス金額にわけUNIONしたのですが、
もっと綺麗(高速)にやる方法があるのではないか?と思い投稿いたしました。
なにかヒントございましたら、ご教授ください。
DB環境:Oracle 11g
No.2ベストアンサー
- 回答日時:
--綺麗かどうかはともかく、かなり無理やり
SELECT 日付, SUM(金額) AS 金額
FROM (
SELECT 日付, 金額,
ROW_NUMBER() OVER (PARTITION BY 日付 ORDER BY 金額) AS id
FROM 出納帳
)
GROUP BY 日付, CASE WHEN 金額 < 0 THEN 0 ELSE id END;
実は一意になるキーはすでにカラムにもっています。
それをGROUP BYのELSEに入れれば、うまくいきそうです!
素晴らしい回答ありがとうございます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- PHP PHP MySql ページング 2 2022/09/20 06:38
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- その他(暮らし・生活・行事) 町内費からの寄付金の勘定項目を教えてください。 3 2022/10/08 16:23
- 印紙税 遅延料金 1 2023/03/07 19:05
- ふるさと納税 個人年金の受取金に住民税がかかるのか? 3 2022/06/22 22:17
このQ&Aを見た人はこんなQ&Aも見ています
-
とっておきの「夜食」教えて下さい
真夜中に小腹がすいたときにこっそり作るメニュー、こっそり家を抜け出して食べに行くお店… 人には言えない、けど自慢したい、そんなあなたの「とっておきの夜食」を教えて下さい。
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
遅刻の「言い訳」選手権
よく遅刻してしまうんです…… 「電車が遅延してしまい遅れました」 「歯医者さんが長引いて、、、」 「病院が混んでいて」 などなどみなさんがこれまで使ってきた遅刻の言い訳がたくさんあるのではないでしょうか?
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
好きな和訳タイトルを教えてください
洋書・洋画の素敵な和訳タイトルをたくさん知りたいです!【例】 『Wuthering Heights』→『嵐が丘』
-
特定の列だけをGROUP BYしたい時
SQL Server
-
SQLで特定の項目の重複のみを排除した全項目を取得する方法
その他(プログラミング・Web制作)
-
GROUP BYを行った後に結合したい。
Oracle
-
-
4
一部のカラムでdistinctし全てのカラムを取得
MySQL
-
5
SELECT 文 GROUP での1件目を取得
SQL Server
-
6
group byで指定したカラム以外のカラムの値を取得したい
PostgreSQL
-
7
Oracle 2つのDate型の値の差を「分」で取得したい
その他(データベース)
-
8
DATE型とnullの比較
その他(データベース)
-
9
count関数の値をwhere句で使用する方法について
MySQL
-
10
SQL文で複数の項目のうちひとつの項目のみの重複を排除する方法を教えてください。
MySQL
-
11
テーブルからのselectにおいてデータの有無により結果をわけたい
PostgreSQL
-
12
SQL Left Join で重複を排除するには
SQL Server
-
13
sqlserverで集計結果をUPDATEしたいです
SQL Server
-
14
GROUP BYを使ったSELECT文の総件数を求める方法
SQL Server
-
15
SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について
Oracle
-
16
[SQL]重複内容を持つデータから1件抽出かつ複数のカラムを表示したい
その他(データベース)
-
17
データベースのINT型項目にNULLはNG?
MySQL
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLで部分的にGROUP BYしたいとき
-
Accessの数値から時間に変換す...
-
SQLサーバで和暦から西暦に変換...
-
23時59分59秒までのデータを抽...
-
oracle 文字列 01:45 を時間に...
-
OSのシステム日付を変更して...
-
今日の日付が入った行のデータ...
-
エクセル 日付による並べ替え...
-
日付の切り出し方法について
-
SQL ブレーク処理について
-
日付の最大値レコードを取得す...
-
14桁の日付(YYYYMMDDHHMMSS)を...
-
Excelの並び替え(先頭の文字以...
-
WHERE句にて「30日前から今日ま...
-
ExcelのSUMPRODUCTで日付の範囲...
-
ACCESSでDate関数のエラーのついて
-
OracleのDATE型について
-
Excelグラフの日付軸の日付がず...
-
日付時刻+連番の主キーをSQLだ...
-
テーブルの主キーをdate型...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLで部分的にGROUP BYしたいとき
-
Accessの数値から時間に変換す...
-
今日の日付が入った行のデータ...
-
重複するIDのデータを1行にま...
-
14桁の日付(YYYYMMDDHHMMSS)を...
-
SQLサーバで和暦から西暦に変換...
-
テーブルの主キーをdate型...
-
日付の切り出し方法について
-
日付書式に変換でこまっています!
-
oracle 文字列 01:45 を時間に...
-
日付型なら変数の先頭になん...
-
Excelグラフの日付軸の日付がず...
-
SQL/Loaderでの年月日時分秒の...
-
エクセル 日付による並べ替え...
-
ExcelのSUMPRODUCTで日付の範囲...
-
23時59分59秒までのデータを抽...
-
DB2のSQL(日付)について
-
excel 日付のみ置換したいのです
-
ACCESSでDate関数のエラーのついて
-
WHERE句にて「30日前から今日ま...
おすすめ情報