我需要根据用户拥有的项目来计算收入。 例如,前10项是免费的,最多100项是0.50,最多200项是0.25,最多500项是0.15。例如。
我不知道从哪里开始,我能得到一些方向吗?
EG。如果用户有365个项目,则为(10 * 0)+(90 * 0.5)+(100 * 0.25)+(165 * 0.15)
理想情况下我会在python中做这件事,但是仪表板工具没有这个功能......
编辑: 我应该提到的是,物品的数量实际上并不是他们拥有的数量,而是他们选择的限制。限制在订阅事件中保存为单个数字。因此,对于每个用户,我将有一个表示其最大项目的整数,例如。 365
答案 0 :(得分:2)
使用窗口函数row_number
的第一个数字项,
然后使用案例表达式为每个项目指定适当的值
简单示例:http://sqlfiddle.com/#!17/32e4a/9
SELECT user_id,
SUM(
CASE
WHEN rn <= 10 THEN 0
WHEN rn <= 100 THEN 0.5
WHEN rn <= 200 THEN 0.25
WHEN rn <= 500 THEN 0.15
ELSE 0.05
END
) As revenue
FROM (
SELECT *,
row_number() OVER (partition by user_id order by item_no ) As rn
FROM mytable
) x
GROUP BY user_id
我应该提到物品的数量实际上并非如此 他们拥有的数字,是他们选择的限制。限制已保存 作为订阅事件中的单个数字。所以我会为每个用户 有一个整数代表他们的最大项目,例如。 365
在这种情况下,以下查询可能符合您的需求:
演示:http://sqlfiddle.com/#!17/e7a6a/2
SELECT *,
(SELECT SUM(
CASE
WHEN rn <= 10 THEN 0
WHEN rn <= 100 THEN 0.5
WHEN rn <= 200 THEN 0.25
WHEN rn <= 500 THEN 0.15
ELSE 0.05
END
)
FROM generate_series(1,t.user_limit) rn
)
FROM mytab t;