ある人が調査に回答した回数を示す表があります。人id
とはsurvey id
ですvarchar(10)
。返信された列は、無応答または応答のいずれint
かであり、です。次のようになります。0
1
databaseId
varchar(2)
personId surveyId replied databaseId
0001 1366 0 3
0002 2243 1 1
0003 6693 0 2
0004 1246 0 1
0045 2740 1 4
.... .... ... ...
調査の回答率に関する要約統計量を取得しようとしていますがINSERT
、結果を新しいテーブルにしようとするとエラーが発生します。新しいテーブルの形式は次のとおりです。
surveyId respRate
1366 0.00000
2243 0.00832
2244 0.02377
8875 0.01534
.... ...
ここsurveyId
でvarchar(20)
、respRate
はdecimal(5,5)
です。以下を使用して新しいテーブルに挿入しようとすると、次のようになります。
insert into summaryTable
(surveyId, meanrr)
SELECT t1.surveyId
,(sum(t1.replied)*1.0 / count(replied)*1.0) meanrr
FROM (select * from table1
where databaseid in ('1','2','3')) t1
where surveyId is not null
group by surveyId
次のエラーメッセージが表示されます。
Msg 8115, Level 16, State 8, Line 8
Arithmetic overflow error converting numeric to data type numeric.
私はこれについていくつかの調査を行いましたが、ターゲット列のサイズを大きくする以外に多くのことは見つかりませんでした(つまりdecimal(5,5)
-> decimal(10,10)
)が、これを試したときに同じ応答が得られました。
クエリ部分をその部分なしで試してみると、insert into
うまくいくようです(またはエラーメッセージが表示されません)。
他に何か提案はありますか?