1
Iテーブルを有する:グループは
spent totalsent totalused
----------------------------
4 1234 123
6 12 4
7 45 32
Iグループに必要とtotalused/totalsent 0 <のグループに= = < = 5、6 <を費やし費やさ< = 10というように。
どうすればいいですか?
Iテーブルを有する:グループは
spent totalsent totalused
----------------------------
4 1234 123
6 12 4
7 45 32
Iグループに必要とtotalused/totalsent 0 <のグループに= = < = 5、6 <を費やし費やさ< = 10というように。
どうすればいいですか?
あなただけの5のグループを欠けている場合は、おそらくこのコードはかなり以来、正しく0 0以下は何も処理しない5.
with my_source_data as (
select 4 as spent, 1234 as totalsent, 123 as totalused from dual union all
select 6 as spent, 12 as totalsent, 4 as totalused from dual union all
select 7 as spent, 45 as totalsent, 32 as totalused from dual
)
select
(spent_group -1) * 5 + 1 as lower_bound,
spent_group * 5 as upper_bound, totalsent, totalused
from (
select
greatest(ceil(spent/5),1) as spent_group,
sum(totalsent) as totalsent, sum(totalused) totalused
from my_source_data
group by greatest(ceil(spent/5),1)
)
によって分割する上でのグループの列を設定することができますそれは下のグループにすべてを置き、それに1-5
というラベルを付けますが、あなたの要件はその点で少し曖昧です。
また、これは疎グループであるため、ソースデータがあれば11-15の行しか作成できません。
ポニーをありがとう。 +1 – EvilTeach
私はちょうど属性の条件に基づいてグループ化したい。ここでは、0-5、6-10、11-15のグループで費やしてグループ分けされた(合計/合計) –