<?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.lili.modules.lmk.mapper.LmkOrderSelectMapper">
|
<resultMap id="OrderCountByDayMap" type="java.util.Map">
|
<result column="day" property="day" />
|
<result column="count" property="count"/>
|
</resultMap>
|
|
<resultMap id="orderTimePeriod" type="java.util.Map">
|
<result column="day" property="day" />
|
<result column="hour" property="hour"/>
|
</resultMap>
|
|
<resultMap id="productRepurchase" type="java.util.Map">
|
<result column="goods_name" property="goodsName"/>
|
<result column="repurchase_rate_percent" property="repurchaseRate"/>
|
</resultMap>
|
|
<resultMap id="viewDataCount" type="java.util.Map">
|
<result column="day" property="day" />
|
<result column="hour" property="hour"/>
|
<result column="count" property="count"/>
|
</resultMap>
|
|
<select id="selectOrderCountByDay" resultMap="OrderCountByDayMap">
|
SELECT
|
DATE(create_time) AS day,
|
COUNT(*) AS count
|
FROM
|
li_order o
|
WHERE
|
o.create_time BETWEEN #{startTime} AND #{endTime}
|
GROUP BY
|
day
|
ORDER BY
|
day ASC
|
</select>
|
|
<select id="selectOrderTimePeriod" resultMap="orderTimePeriod">
|
SELECT
|
DATE(create_time) AS day,
|
HOUR(create_time) AS hour,
|
COUNT(*) AS count
|
FROM
|
li_order o
|
WHERE
|
o.create_time BETWEEN #{startTime} AND #{endTime}
|
GROUP BY
|
day
|
ORDER BY
|
day , hour ASC
|
</select>
|
<select id="selectViewDataCount" resultMap="">
|
SELECT
|
DATE(LAR.create_time) AS day,
|
HOUR(LAR.create_time) AS hour,
|
COUNT(LAR.id) AS count
|
FROM lmk_action_record LAR
|
where LAR.delete_flag = 0
|
AND LAR.page_status = 'JOIN'
|
GROUP BY day, hour
|
ORDER BY day, hour;
|
</select>
|
<!--buyer_count购买人数 buy_times总购买次数 repurchase_buyer_count 复购人数-->
|
<select id="selectProductRepurchase" resultMap="productRepurchase">
|
SELECT
|
t.goods_name,
|
t.total_users AS buyer_count,
|
t.total_buy_times AS buy_times,
|
t.repurchase_users AS repurchase_buyer_count,
|
ROUND(
|
IFNULL(t.repurchase_users / t.total_users, 0) * 100,
|
2
|
) AS repurchase_rate_percent
|
FROM (
|
SELECT
|
goods_id,
|
goods_name,
|
COUNT(DISTINCT member_id) AS total_users,
|
SUM(user_buy_counts.buy_count) AS total_buy_times,
|
SUM(CASE WHEN buy_count >= 2 THEN 1 ELSE 0 END) AS repurchase_users
|
FROM (
|
SELECT
|
i.goods_id,
|
i.goods_name,
|
o.member_id,
|
COUNT(DISTINCT o.sn) AS buy_count
|
FROM li_order_item i
|
INNER JOIN li_order o ON i.order_sn = o.sn
|
WHERE
|
o.order_status = 'COMPLETED'
|
AND o.delete_flag = 0
|
AND i.delete_flag = 0
|
AND o.member_id IS NOT NULL
|
AND o.create_time >= #{startTime}
|
AND o.create_time <= #{endTime}
|
GROUP BY i.goods_id, i.goods_name, o.member_id
|
) AS user_buy_counts
|
GROUP BY goods_id, goods_name
|
) AS t
|
ORDER BY repurchase_rate_percent DESC
|
LIMIT #{currentLimit};
|
</select>
|
|
</mapper>
|