Q&A

回答の並べ替え:
投稿新規に質問を投稿する

データの集計について

moriya moriya

2019-09-04 17:37

CELFのSQLではSUMが利用できなく、アクションにて代替手段を検討しています。

組織コード"A01"の"残業時間_分"には、組織コード"A01"を含むものすべての"残業時間_分"の合計を出力させたいと思っています。

現在は、組織コード"A01"のみの"残業時間_分"が合計されて表示されます。

同じような実装を行った方がいらっしゃいましたら、ご教授いただければ幸いです。

SUM関数にASが必要なのは、わからなかったです。どうもありがとうございました。

そこで、下記のようにSQLを書いてみたのですが、保存する際にエラーとなってしまいます。

SELECT 所属組織コード,
年月日,
SUM(残業時間_分) OVER(PARTITION 所属組織コード) AS 残業時間_分
FROM 労務管理_月次確定実績履歴
GROUP BY 年月
ORDER BY 所属組織コード,年月日

教えていただいた通りにSUM関数にASをつけて所属組織コード毎に集計をするようにしてみたのですが、何が間違っているのでしょうか。

CELFのSQLにお詳しい方、いらっしゃいましたらご教授いただければ幸いです。

Yexiongmao Yexiongmao
おはようございます。

CELFのSQL(MySQL)ではwindow関数「OVER()」はサポートしていないようです。
SUM()+GROUP BYで集計対象カラムを出力するよりないようです。
また、SUM()のASにカラム名と同じ名前は使えません。どうせ表示されるわけでもないので、A, B,などでも構わないと思います。
SQLで要求を満たせなければ、あとはアクションで調整することになると思います。
Yexiongmao Yexiongmao
こんにちは。

アクションでも可能だと思いますが、以下のようなSQLでできると思います。
CELFの場合SUM(), SUBSTRING()など関数を使う場合は「AS 別名」が必須です。

SELECT SUBSTRING(所属組織コード, 1, 3) AS A, 年月日, SUM(残業時間_分) AS B
FROM 労務管理_月次確定実績履歴
GROUP BY SUBSTRING(所属組織コード, 1, 3), 年月日