|
@@ -0,0 +1,69 @@
|
|
|
+<?xml version="1.0" encoding="UTF-8"?>
|
|
|
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
|
+<mapper namespace="cn.iocoder.yudao.module.rq.dal.mysql.iotmaintainmaterial.IotMaintainMaterialMapper">
|
|
|
+
|
|
|
+ <!--
|
|
|
+ 一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
|
|
|
+ 无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
|
|
|
+ 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
|
|
|
+ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
|
|
|
+ -->
|
|
|
+ <select id="selectMaterialsByDeptId"
|
|
|
+ resultType="cn.iocoder.yudao.module.statistics.dal.dataobject.maintain.material.IotMaintainMaterialDO">
|
|
|
+ SELECT spu.id AS spuId
|
|
|
+ -- 浏览量:一个用户可以有多次
|
|
|
+ , (SELECT COUNT(1)
|
|
|
+ FROM product_browse_history
|
|
|
+ WHERE spu_id = spu.id
|
|
|
+ AND create_time BETWEEN #{beginTime} AND #{endTime}) AS browse_count
|
|
|
+ -- 访客量:按用户去重计数
|
|
|
+ , (SELECT COUNT(DISTINCT user_id)
|
|
|
+ FROM product_browse_history
|
|
|
+ WHERE spu_id = spu.id
|
|
|
+ AND create_time BETWEEN #{beginTime} AND #{endTime}) AS browse_user_count
|
|
|
+ -- 收藏数量:按用户去重计数
|
|
|
+ , (SELECT COUNT(DISTINCT user_id)
|
|
|
+ FROM product_favorite
|
|
|
+ WHERE spu_id = spu.id
|
|
|
+ AND create_time BETWEEN #{beginTime} AND #{endTime}) AS favorite_count
|
|
|
+ -- 加购数量:按用户去重计数
|
|
|
+ , (SELECT COUNT(DISTINCT user_id)
|
|
|
+ FROM trade_cart
|
|
|
+ WHERE spu_id = spu.id
|
|
|
+ AND create_time BETWEEN #{beginTime} AND #{endTime}) AS cart_count
|
|
|
+ -- 下单件数
|
|
|
+ , (SELECT IFNULL(SUM(count), 0)
|
|
|
+ FROM trade_order_item
|
|
|
+ WHERE spu_id = spu.id
|
|
|
+ AND create_time BETWEEN #{beginTime} AND #{endTime}) AS order_count
|
|
|
+ -- 支付件数
|
|
|
+ , (SELECT IFNULL(SUM(item.count), 0)
|
|
|
+ FROM trade_order_item item
|
|
|
+ JOIN trade_order o ON item.order_id = o.id
|
|
|
+ WHERE spu_id = spu.id
|
|
|
+ AND o.pay_status = TRUE
|
|
|
+ AND item.create_time BETWEEN #{beginTime} AND #{endTime}) AS order_pay_count
|
|
|
+ -- 支付金额
|
|
|
+ , (SELECT IFNULL(SUM(item.pay_price), 0)
|
|
|
+ FROM trade_order_item item
|
|
|
+ JOIN trade_order o ON item.order_id = o.id
|
|
|
+ WHERE spu_id = spu.id
|
|
|
+ AND o.pay_status = TRUE
|
|
|
+ AND item.create_time BETWEEN #{beginTime} AND #{endTime}) AS order_pay_price
|
|
|
+ -- 退款件数
|
|
|
+ , (SELECT IFNULL(SUM(count), 0)
|
|
|
+ FROM trade_after_sale
|
|
|
+ WHERE spu_id = spu.id
|
|
|
+ AND refund_time IS NOT NULL
|
|
|
+ AND create_time BETWEEN #{beginTime} AND #{endTime}) AS after_sale_count
|
|
|
+ -- 退款金额
|
|
|
+ , (SELECT IFNULL(SUM(refund_price), 0)
|
|
|
+ FROM trade_after_sale
|
|
|
+ WHERE spu_id = spu.id
|
|
|
+ AND refund_time IS NOT NULL
|
|
|
+ AND create_time BETWEEN #{beginTime} AND #{endTime}) AS after_sale_refund_price
|
|
|
+ FROM product_spu spu
|
|
|
+ WHERE spu.deleted = FALSE
|
|
|
+ ORDER BY spu.id
|
|
|
+ </select>
|
|
|
+</mapper>
|