2016-08-26 13 views
2

私は、従業員の月給を格納しているテーブルを持っています。月額給与と総給与を取得するためのOracleデータベースクエリ

create table myemp 
( 
empno number , 
month number, 
year number, 
salary number 
); 

今、私はあなたが行くここ

empno|month|Year|salary 
0001 2 2016  10000 
0001 3 2016 11000 
0001 4 2016 12000 
0001 -- ---- (10000+11000+12000) 
0002 2 2016 15000 
0002 3 2016 16000 
0002 4 2016 15000 
0002 -- ----(15000+16000+15000) 
+0

は、Oracleのselect文の出力で合計行と総計行を取得しますか? –

+0

はい@sanjay radadiya – ateenraw

+0

empnoは主キーですが、empno 0001は4回結果になりますか? – Mike

答えて

2

下記のように私たちは、オラクルの Rollup機能を使用して、合計と小計を設定することができます
select empno,month,year,sum(salary) from myemp 
GROUP BY year,ROLLUP (empno,month) 

ここでempnoとmonthはロールアップ関数で、 のempnoとmonthグループの合計と小計を示します。

私はこれが役に立ちそうです。

+0

'GROUP BY empno、ROLLUP((年、月))'。年小計を抑制する二重括弧。 – Mike

+0

はい@あなたの助けに感謝します。私はこのコンセプトを知っています。 –

1

以下のような結果を得るために、クエリが必要になります。

SELECT * 
FROM (
    (
     SELECT empno, month, year, salary 
     FROM myemp 
    ) 
    UNION ALL 
    (
     SELECT empno, NULL AS month, NULL AS year, sum(salary) 
     FROM myemp 
     GROUP BY empno 
    ) 
) AS foo 
ORDER BY empno, year IS NULL, year, month 
0

(姓によってDEPT_NO順でパーティション)を超える姓、DEPT_NO、給与、 合計(給与)を選択 次のようになりdept_total myemp 順から給与、姓によります。

+0

別の回答を追加する代わりに、元の回答を編集して削除するだけです。または、もう一方を削除してこれを保管してください。あなたが選ぶ。 – sstan

関連する問題