実現したいこと
平均年齢の項目を任意の小数点以下の桁数を表示しする。
不足している場合は0を入れる
(例)
49.25に対して桁数を3とした場合は「49.250」としたい
前提
男女別、全社員の平均年齢、および人数を計算して抽出するSQLを作成しております。
平均年齢の表示桁数を統一するのが今回の目的です
発生している問題・エラーメッセージ
上記例でしめしたように不足分には「0」が入ってほしいのだがやり方がわからない
該当のソースコード
(実行SQL)
SELECT
CHK_GENDER(性別) AS 性別,
TRUNC(AVG(UPDATE_AGE(誕生日)), 3) AS 平均年齢,
COUNT() AS 人数
FROM
社員マスタ
GROUP BY
CHK_GENDER(性別)
UNION ALL
SELECT
'全社' AS 性別,
TRUNC(AVG(UPDATE_AGE(誕生日)), 3) AS 平均年齢,
COUNT() AS 人数
FROM
社員マスタ
(作成してみたFunction)
CREATE OR REPLACE FUNCTION YAMAGATA.AVG_AGE (age in NUMBER, effect_number in NUMBER )
RETURN NUMBER-- 戻り値のデータ型
IS
total_number NUMBER;
BEGIN
-- aを小数点以下b桁までフォーマット
total_number := TO_NUMBER(TRUNC(age, effect_number), 'FM99999999999990.' || RPAD('0', effect_number, '0'));
RETURN total_number;
END;
/
試したこと
表示しているソースコードにはTRUNC関数を使用して単純に切り捨てているがここにFunctionを利用できないかも試してみた
引数に平均年齢(変数a)、表示したい桁数(変数b)として任意の桁数を表示してその値を返すというものです。
補足情報(FW/ツールのバージョンなど)
Object Browser for Oracle, ORACLE11

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/11/10 06:52