2017-05-03 15 views
0

私は年齢グループとスコアグループによって頻度分布を取得しようとしているテーブルを持っています。以下は私が実行しているクエリです。私はすべての列を含めていますかなり確信して表現oracle with group with grouping with

BYないGROUP: ORA-00979:クエリを実行する場合

with age_map as (select distinct age,case when age is not null 
             and AGE>=16 AND AGE<36 then '16-35' 
             when age is not null and AGE>=36 AND 
             AGE<56 then '36-56' 
             when age is not null and AGE>=56 then 
             '56+' 
             when age is null then 'NA' 
            end as age_group 
        from rec_table 
        where monthofsale = 'Apr 2017' 
        ) 
     select name,location,b.age_group,sum(weight),count(*) 
     from rec_table a, age_map b 
     where a.age = b.age 
     group by name,location,b.age_group 

、私はエラーを取得しておきます。それで、これが正しくないのだろうか?

私の予想される出力は次のようになります。

 Name  location age_group weight count 
     x   y   16-35   15 3 
     p   q   36-56   48 7 

この上の任意のアイデア?

答えて

0

エラーでグループ句を持つから来ている:直接句とで除去おかげで、グループごとにケースを使用

select age, case when age is not null and AGE>=16 AND AGE<36 then '16-35' 
       when age is not null and AGE>=36 AND AGE<56 then '36-56' 
       when age is not null and AGE>=56 then '56+' 
       when age is null then 'NA' 
       end as age_group 
from rec_table 
where monthofsale = 'Apr 2017' 
group by age, case when age is not null and AGE>=16 AND AGE<36 then '16-35' 
       when age is not null and AGE>=36 AND AGE<56 then '36-56' 
       when age is not null and AGE>=56 then '56+' 
       when age is null then 'NA' 
       end 
+0

は、このような選択を行います。今働こうとしているようだ。 – Bee