假设已知: id 无效字段 promotion_info_id 促销信息编号 promotion_no 促销编号 sku_id 商品编号 sku_name 商品名称 promotion_price 促销价 begin_time 促销开始时间 end_time 促销结束时间 limit_count SKU限购数量 sale_count 购买数量 state 促销状态1:新建 3:审核中 5:审核通过 6:售罄or取消 7:驳回 pdj_price 商品标价 sys_version 系统版本 create_time 记录时间 update_time 更新记录时间 create_pin 记录账号 update_pin 更新记录账号 yn 删除标识 0:有效 1:无效 ts 时间戳 begin_state 1:已开始 0:未开始(供推送消息功能使用) end_state 1: 已结束 0:未结束(供推送消息功能) cost_price 成本价 allowance 是否补贴 business_version 无效字段 promotion_type 商品促销类型,3单品直降,4限时抢购,5单品买赠,6新人专享,7第二件N折, time_id 时间id create_dt 记录日期 1)、活动类型不同(包括秒杀,单品直降,新人专享,第二件N折两种及以上活动类型),则重叠时间内活动权重最高的优先生效,权重由高到低排序为:新人专享-秒杀-直降-第二件N折; 2)、活动类型相同(如活动都是秒杀,或者都是单品直降等),则看活动开始时间: a、假设A、B两个直降活动,A活动开始时间为1点-5点,B活动开始时间为1点-8点,两个活动开始时间一样,则只会有一个活动生效: 首先判断促销力度,力度大的生效; 如果促销力度一样,后创建的活动生效; b、假设A、B两个秒杀活动,A活动开始时间为1点-10点,B活动开始时间为5点-8点,两个活动开始时间一不样,则两个活动都会生效: 1点-5点,A活动生效; 5点-8点,B活动生效,同时A活动失效; 8点-10点,A活动不会再恢复,两个活动均失效。 建立适当的指标衡量商场每天的打折力度,并计算该商场从2016年11月30日到2019年1月2日每天的打折力度
时间: 2024-03-15 19:41:42 浏览: 93
这是一个比较复杂的问题,需要对数据进行整理和计算。我可以提供一些思路,但无法给出具体的结果。
首先,需要根据数据中的促销类型和开始时间对活动进行分类和排序。可以先筛选出2016年11月30日到2019年1月2日之间的促销数据,再按照时间顺序进行排序。对于同一时间段内的多个促销活动,按照上述规则进行排序,确定哪一个活动生效。
然后,可以计算每天的打折力度指标。一种可能的方法是,对于每个商品,计算促销价与商品标价之比的平均值。再将每个商品的指标求和并取平均值,即可得到该商场每天的打折力度指标。
需要注意的是,这只是一种简单的计算方法,可能无法完全反映商场的打折力度。实际上,商场的打折力度还涉及到促销力度、商品种类、销售额等多个方面。因此,需要根据实际情况进行调整和补充。
相关问题
ls_order_sku 下有 sku_id,order_id字段 order_id 和 ls_order表的id字段关联 ls_order 有create_time字段 sku_id 和 ls_sku表的 id字段关联 ls_sku的 spu_id字段 和 ls_spu表的 id字段关联 product_line_id 和 ls_product_line表的id字段关联 我要根据created_time 计算出 当天,当周,当月,当年分别销售额, 并根据product_line_id 分组,展示product_line_id,ls_product_line表的name字段,以及聚合的值, 我想用一条sql实现怎么编写sql
以下是可以实现你要求的 SQL 语句:
```sql
SELECT
pl.id AS product_line_id,
pl.name AS product_line_name,
SUM(s.price * od.quantity) AS daily_sales,
SUM(s.price * od.quantity) OVER (PARTITION BY pl.id, DATE_TRUNC('week', o.create_time)) AS weekly_sales,
SUM(s.price * od.quantity) OVER (PARTITION BY pl.id, DATE_TRUNC('month', o.create_time)) AS monthly_sales,
SUM(s.price * od.quantity) OVER (PARTITION BY pl.id, DATE_TRUNC('year', o.create_time)) AS yearly_sales
FROM
ls_order_sku AS od
JOIN
ls_order AS o ON o.id = od.order_id
JOIN
ls_sku AS s ON s.id = od.sku_id
JOIN
ls_spu AS sp ON sp.id = s.spu_id
JOIN
ls_product_line AS pl ON pl.id = s.product_line_id
GROUP BY
pl.id,
pl.name,
DATE_TRUNC('day', o.create_time)
ORDER BY
pl.id,
DATE_TRUNC('day', o.create_time)
```
注意:
1. 我们使用了 `JOIN` 连接了多个表,使用了 `GROUP BY` 和聚合函数 `SUM` 计算出了每个产品线在不同时间范围内的销售额。
2. 我们使用了 `OVER (PARTITION BY ...)` 窗口函数来计算每个产品线在不同时间范围内的累计销售额。
3. 我们使用了 `DATE_TRUNC('day', o.create_time)` 来将订单的创建时间按天取整,以方便按天分组。
4. 最后我们按照产品线和时间排序,以便更好地展示数据。
使用java使{"data":{"pictures":{},"skus":{"1714117164879904":{"effective_price":1980,"sku_id":7230624350863704000,"stock_num":21982},"1714117164879920":{"effective_price":1980,"sku_id":7230624350863688000,"stock_num":28982},"1714117164880896":{"effective_price":1980,"sku_id":7230624350863671000,"stock_num":49981},"1714117164880912":{"sku_id":7230624350863655000,"stock_num":29991,"effective_price":1980}},"specs":[{"name":"口味","spec_items":[{"id":"1714117164879904","name":"原味4袋共100g"},{"id":"1714117164879920","name":"烧烤味4袋共100g","select":true},{"id":"1714117164880896","name":"爆香孜然味4袋共100g"},{"id":"1714117164880912","name":"黑胡椒味4袋共100g"}]}],"error_code":0,"description":""},"extra":{"now":1683536909,"logid":"20230508170828AFC77E1BF34EA805F80A","error_code":0,"description":"","sub_error_code":0,"sub_description":""},"select":"烧烤味4袋共100g","item":{"cover":"https://p9-aio.ecombdimg.com/obj/ecom-shop-material/v1_inXJrDL_70834216251269942080421_ef096c3ab17f93308fa0a14ebd81da8e_sx_590268_www800-800","edit":true,"index":1}}中的spec_items只保留"select": true
可以使用以下代码来实现:
```java
import com.alibaba.fastjson.JSONObject;
public class Main {
public static void main(String[] args) {
String jsonStr = "{\"data\":{\"pictures\":{},\"skus\":{\"1714117164879904\":{\"effective_price\":1980,\"sku_id\":7230624350863704000,\"stock_num\":21982},\"1714117164879920\":{\"effective_price\":1980,\"sku_id\":7230624350863688000,\"stock_num\":28982},\"1714117164880896\":{\"effective_price\":1980,\"sku_id\":7230624350863671000,\"stock_num\":49981},\"1714117164880912\":{\"sku_id\":7230624350863655000,\"stock_num\":29991,\"effective_price\":1980}},\"specs\":[{\"name\":\"口味\",\"spec_items\":[{\"id\":\"1714117164879904\",\"name\":\"原味4袋共100g\"},{\"id\":\"1714117164879920\",\"name\":\"烧烤味4袋共100g\",\"select\":true},{\"id\":\"1714117164880896\",\"name\":\"爆香孜然味4袋共100g\"},{\"id\":\"1714117164880912\",\"name\":\"黑胡椒味4袋共100g\"}]}],\"error_code\":0,\"description\":\"\"},\"extra\":{\"now\":1683536909,\"logid\":\"20230508170828AFC77E1BF34EA805F80A\",\"error_code\":0,\"description\":\"\",\"sub_error_code\":0,\"sub_description\":\"\"},\"select\":\"烧烤味4袋共100g\",\"item\":{\"cover\":\"https://p9-aio.ecombdimg.com/obj/ecom-shop-material/v1_inXJrDL_70834216251269942080421_ef096c3ab17f93308fa0a14ebd81da8e_sx_590268_www800-800\",\"edit\":true,\"index\":1}}";
JSONObject jsonObject = JSONObject.parseObject(jsonStr);
JSONArray specItems = jsonObject.getJSONObject("data").getJSONArray("specs").getJSONObject(0).getJSONArray("spec_items");
for (int i = 0; i < specItems.size(); i++) {
JSONObject item = specItems.getJSONObject(i);
if (!item.getBooleanValue("select")) {
specItems.remove(i);
i--;
}
}
System.out.println(jsonObject.toJSONString());
}
}
```
这段代码使用了 fastjson 库来解析 JSON 字符串,并将 spec_items 中未被选中的元素移除。最后输出的 JSON 字符串中,只剩下了 "select": true 的元素。
阅读全文