私は2つのテーブルcardinfoとpaytbを持っています。私の声明では、私はCONT_IDによってそれらを結合しました。select case文追加情報
select (case when age_years >= 18 and age_years < 30 then '18-29'
when age_years < 50 then '30-49'
when age_years < 70 then '50-69'
when age_years < 100 then '70-100'
end) as age_range,
count(DISTINCT c.CONT_ID) as num,
CASE WHEN GENDER = '1' THEN 1 ELSE 0 END/COUNT(DISTINCT c.CONT_ID),
SUM(ACAUREQ_AUREQ_TX_DT_TTLAMT)/COUNT(*) 'TOTAL-Amount Avg'
from cardinfo c
left join paytb t
on c.CONT_ID = t.CONT_ID
group by (case when age_years >= 18 and age_years < 30 then '18-29'
when age_years < 50 then '30-49'
when age_years < 70 then '50-69'
when age_years < 100 then '70-100'
end)
order by min(age_years);
さて、これは最初の2列を示しています。
AGE_RANGE NUM GENDER
---------+---------+----------------
18-29 828 50%
30-49 2510 ??
50-69 2014 ??
70-100 649
私は表からGENDERパラメータ(0または1)を追加したいが。
CASE WHEN GENDER = '1' THEN 1 ELSE 0 END/COUNT(DISTINCT c.CONT_ID)
SQLCODE = -122
をそして私は、トランザクションの平均を見つけるためにしようと試みた:しかし、これは動作していない
SUM(ACAUREQ_AUREQ_TX_DT_TTLAMT)/COUNT(*) 'TOTAL-Amount Avg'
は、残念ながらこれは私にDECFLOATのエラーになります。
合計次のようになります。しかし、あなたはおそらく必要はありません
SUM(CASE WHEN GENDER = '1' THEN 1 ELSE 0 END)/COUNT(DISTINCT c.CONT_ID)
:
SUM(ACAUREQ_AUREQ_TX_DT_TTLAMT)
-----+---------+---------+---------+
+1.232071426000000000000000E+0007
+3.062581021000000000000000E+0007
+2.399951792000000000000000E+0007
+8.228919170000000000000000E+0006
働いた、私が持っていますこれに多くの列を追加する。最も頻繁なACAUREQ_AUREQ_ENV_M_CMONNM - (共通の商人名)と同様です。どのように見えるだろうか? – bastel
@bastel。 。 。私はあなたが何を望んでいるのかはわかりませんが、 'SUM(CASE。。。)'と 'AVG(CASE。。。)'は共通の構造です。 –