質問

グループごとにまとめたレポートを作成しようとしています。例えば:

ID           NAME              COUNT           TOTAL     TYPE
-------------------------------------------------------------
1            Test 1            10                         A
2            Test 2            8                          A
                                               18

7            Mr. Test          9                          B
12           XYZ               4                          B
                                               13

25           ABC               3                          C
26           DEF               5                          C
19           GHIJK             1                          C
                                               9

TOTAL 列以外のすべてを実行できるクエリがあります。

       select sd.id DATA_REF_NUM ID, count(sd.DATA_DEF_ID) COUNT, defs.data_name NAME, sd.type
       from some_data sd, data_defs defs
       where sd.data_def_id = defs.data_def_id
       group by some_data.type, some_data.id, defs.data_nam
       order by some_data.id asc, count(amv.MSG_ID) desc ;

グループの概要を取得する方法がわかりません。この場合、ID のグループごとに COUNT の合計を取得しようとしています。

アップデート:

グループはタイプごとにあります。元の投稿ではそれを忘れていました。

TOTAL は各グループの SUM(COUNT) です。

役に立ちましたか?

解決

どのように...

のようにROLLUPを使用する方法について

select sd.id DATA_REF_NUM ID, count(sd.DATA_DEF_ID) COUNT, defs.data_name NAME, sd.type from some_data sd, data_defs defs where sd.data_def_id = defs.data_def_id group by ROLLUP(some_data.type, (some_data.id, defs.data_nam)) order by some_data.id asc, count(amv.MSG_ID) desc ;

私のデータベースで同様の例えば

この作品が、私は2つのだけの列ではなく、必ずそれはより多くのオーバーどのように機能するか...
上でそれをやりました これは便利ですホープ、
クレイグ...

EDIT:ROLLUP、あなたはidとdata_namなどの小計を超えるが、括弧内ROLLUP内でひとまとめにする必要があります以上の合計ではなく、したい列)で

他のヒント

SQL * Plusであると仮定すると、あなたはこのような何かを行うことができます:

col d1 noprint
col d2 noprint
WITH q AS
(SELECT sd.id, count(sd.DATA_DEF_ID) COUNT, defs.data_name NAME, sd.type
   FROM some_data sd JOIN data_defs defs ON (sd.data_def_id = defs.data_def_id)
  GROUP BY some_data.type, some_data.id, defs.data_nam)
SELECT 1 d1, type d2, id, count, name FROM q
UNION ALL
SELECT 2, type, null, null, null, SUM(count) FROM q GROUP BY 2, type
 ORDER BY 2,1,3;

私は、PL / SQL Developerの8、唯一のSQL * Plusでこの作業を行うことができません。さえコマンドウィンドウに動作します...

タイプのすべての項目の数を返すサブクエリを試してみてください。これでしょう。

select sd.id DATA_REF_NUM ID, count(sd.DATA_DEF_ID) COUNT, tot.TOTAL_FOR_TYPE, defs.data_name NAME, sd.type
   from some_data sd, data_defs defs, 
      (select count(sd2.DATA_DEF_ID) TOTAL_FOR_TYPE 
       from some_data sd2
       where sd2.type = sd.type) tot
   where sd.data_def_id = defs.data_def_id
   group by some_data.type, some_data.id, defs.data_nam
   order by some_data.id asc, count(amv.MSG_ID) desc ;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top