| | |
| | | ) as aa where aa.thankYouFee != 0 order by aa.insertTime desc |
| | | </select> |
| | | |
| | | <select id="annualTrendStatistics" resultType="com.stylefeng.guns.modular.system.response.TOrderStatisticsAnnualTrendVo"> |
| | | -- 1、年度趋势(出租车、快车、跨城出行、顺风车) |
| | | SELECT |
| | | CONCAT(#{year}, '年', m.month, '月') AS yearMonth, |
| | | m.month, |
| | | IFNULL(SUM(t.payMoney), 0) AS totalMoney |
| | | FROM ( |
| | | SELECT 1 AS month |
| | | UNION ALL SELECT 2 |
| | | UNION ALL SELECT 3 |
| | | UNION ALL SELECT 4 |
| | | UNION ALL SELECT 5 |
| | | UNION ALL SELECT 6 |
| | | UNION ALL SELECT 7 |
| | | UNION ALL SELECT 8 |
| | | UNION ALL SELECT 9 |
| | | UNION ALL SELECT 10 |
| | | UNION ALL SELECT 11 |
| | | UNION ALL SELECT 12 |
| | | ) m |
| | | LEFT JOIN |
| | | ( |
| | | SELECT insertTime, payMoney |
| | | FROM t_order_taxi ot |
| | | WHERE |
| | | ot.state in(8,9) AND YEAR(ot.insertTime) = #{year} |
| | | UNION ALL |
| | | SELECT insertTime, payMoney |
| | | FROM t_order_private_car opc |
| | | WHERE |
| | | opc.state in(8,9) AND YEAR(opc.insertTime) = #{year} |
| | | UNION ALL |
| | | SELECT insertTime, payMoney |
| | | FROM t_order_cross_city occ |
| | | WHERE |
| | | occ.state in(8,9) AND YEAR(occ.insertTime) = #{year} |
| | | UNION ALL |
| | | SELECT addTime as insertTime, money as payMoney |
| | | FROM app_order_ride aor |
| | | WHERE |
| | | aor.state in(5) AND YEAR(aor.addTime) = #{year} |
| | | ) t |
| | | ON MONTH(t.insertTime) = m.month |
| | | GROUP BY m.month |
| | | ORDER BY m.month |
| | | </select> |
| | | |
| | | <select id="totalOrderStatistics" resultType="com.stylefeng.guns.modular.system.response.TOrderStatisticsTotalOrderVo"> |
| | | -- 2、总体订单统计 |
| | | SELECT |
| | | COUNT(*) AS totalNum, -- 总订单数量 |
| | | SUM( |
| | | CASE WHEN (source <> 'ride' AND state IN (8,9)) OR (source = 'ride' AND state = 5) |
| | | THEN 1 ELSE 0 END |
| | | ) AS finishNum, -- 已完成订单数量(待评价/已完成) |
| | | SUM( |
| | | CASE WHEN (source <> 'ride' AND state IN (10,12)) OR (source = 'ride' AND state = 6) |
| | | THEN 1 ELSE 0 END |
| | | ) AS cancelNum, -- 取消订单数量 |
| | | SUM( |
| | | CASE WHEN state = 1 THEN 1 ELSE 0 END |
| | | ) AS unHandlerNum -- 未处理订单 |
| | | FROM ( |
| | | SELECT state, insertTime, 'taxi' AS source |
| | | FROM t_order_taxi |
| | | UNION ALL |
| | | SELECT state, insertTime, 'private' AS source |
| | | FROM t_order_private_car |
| | | UNION ALL |
| | | SELECT state, insertTime, 'cross' AS source |
| | | FROM t_order_cross_city |
| | | UNION ALL |
| | | SELECT state, addTime AS insertTime, 'ride' AS source |
| | | FROM app_order_ride |
| | | ) t |
| | | WHERE t.insertTime >= #{startDate} |
| | | AND t.insertTime <= #{endDate} |
| | | </select> |
| | | |
| | | <select id="newAddPassengerStatistics" resultType="com.stylefeng.guns.modular.system.response.TOrderStatisticsCountVo"> |
| | | <if test="null != type and 1 == type"> |
| | | -- 3、新增乘客数(日新增) |
| | | SELECT |
| | | DATE_FORMAT(d.dayDate,'%Y-%m-%d') AS dateStr, |
| | | DATE_FORMAT(d.dayDate,'%d') AS dateNum, |
| | | COUNT(u.id) AS totalCount |
| | | FROM |
| | | ( |
| | | SELECT CURDATE() dayDate |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 1 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 2 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 3 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 4 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 5 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 6 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 7 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 8 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 9 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 10 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 11 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 12 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 13 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 14 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 15 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 16 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 17 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 18 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 19 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 20 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 21 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 22 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 23 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 24 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 25 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 26 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 27 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 28 DAY) |
| | | UNION ALL SELECT DATE_SUB(CURDATE(),INTERVAL 29 DAY) |
| | | ) d |
| | | LEFT JOIN t_user u ON u.insertTime >= d.dayDate |
| | | AND u.insertTime < DATE_ADD(d.dayDate,INTERVAL 1 DAY) |
| | | GROUP BY d.dayDate |
| | | ORDER BY d.dayDate |
| | | </if> |
| | | <if test="null != type and 2 == type"> |
| | | -- 4、新增乘客数(月新增) |
| | | SELECT |
| | | CONCAT(YEAR(CURDATE()), '-', LPAD(m.month, 2, '0')) AS dateStr, |
| | | m.month as dateNum, |
| | | COUNT(u.id) AS totalCount |
| | | FROM |
| | | ( |
| | | SELECT 1 AS month |
| | | UNION ALL SELECT 2 |
| | | UNION ALL SELECT 3 |
| | | UNION ALL SELECT 4 |
| | | UNION ALL SELECT 5 |
| | | UNION ALL SELECT 6 |
| | | UNION ALL SELECT 7 |
| | | UNION ALL SELECT 8 |
| | | UNION ALL SELECT 9 |
| | | UNION ALL SELECT 10 |
| | | UNION ALL SELECT 11 |
| | | UNION ALL SELECT 12 |
| | | ) m |
| | | LEFT JOIN t_user u ON MONTH(u.insertTime) = m.month |
| | | AND YEAR(u.insertTime) = YEAR(CURDATE()) |
| | | GROUP BY m.month |
| | | ORDER BY m.month |
| | | </if> |
| | | </select> |
| | | |
| | | <select id="orderCountStatistics" resultType="com.stylefeng.guns.modular.system.response.TOrderStatisticsCountVo" > |
| | | <if test="null != type and 1 == type"> |
| | | -- 5、订单量统计(日订单量) |
| | | SELECT |
| | | DATE_FORMAT(d.dayDate, '%Y-%m-%d') AS dateStr, |
| | | COUNT(t.insertTime) AS totalCount, |
| | | IFNULL(SUM(t.payMoney),0) AS totalMoney |
| | | FROM |
| | | ( |
| | | SELECT CURDATE() - INTERVAL 29 DAY AS dayDate |
| | | UNION ALL SELECT CURDATE() - INTERVAL 28 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 27 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 26 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 25 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 24 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 23 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 22 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 21 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 20 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 19 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 18 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 17 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 16 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 15 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 14 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 13 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 12 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 11 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 10 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 9 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 8 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 7 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 6 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 5 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 4 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 3 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 2 DAY |
| | | UNION ALL SELECT CURDATE() - INTERVAL 1 DAY |
| | | UNION ALL SELECT CURDATE() |
| | | ) d |
| | | LEFT JOIN |
| | | ( |
| | | SELECT insertTime,payMoney |
| | | FROM t_order_taxi |
| | | UNION ALL |
| | | SELECT insertTime,payMoney |
| | | FROM t_order_private_car |
| | | UNION ALL |
| | | SELECT insertTime,payMoney |
| | | FROM t_order_cross_city |
| | | UNION ALL |
| | | SELECT addTime AS insertTime,money AS payMoney |
| | | FROM app_order_ride |
| | | ) t |
| | | ON t.insertTime >= d.dayDate |
| | | AND t.insertTime < DATE_ADD(d.dayDate, INTERVAL 1 DAY) |
| | | |
| | | GROUP BY d.dayDate |
| | | ORDER BY d.dayDate |
| | | </if> |
| | | <if test="null != type and 2 == type"> |
| | | -- 6、订单量统计(月订单量) |
| | | SELECT |
| | | CONCAT(d.year, '-', LPAD(d.month, 2, '0')) AS dateStr, |
| | | COUNT(t.insertTime) AS totalCount, |
| | | IFNULL(SUM(t.payMoney),0) AS totalMoney |
| | | FROM |
| | | ( |
| | | SELECT YEAR(CURDATE() - INTERVAL 11 MONTH) AS year, MONTH(CURDATE() - INTERVAL 11 MONTH) AS month UNION ALL |
| | | SELECT YEAR(CURDATE() - INTERVAL 10 MONTH), MONTH(CURDATE() - INTERVAL 10 MONTH) UNION ALL |
| | | SELECT YEAR(CURDATE() - INTERVAL 9 MONTH), MONTH(CURDATE() - INTERVAL 9 MONTH) UNION ALL |
| | | SELECT YEAR(CURDATE() - INTERVAL 8 MONTH), MONTH(CURDATE() - INTERVAL 8 MONTH) UNION ALL |
| | | SELECT YEAR(CURDATE() - INTERVAL 7 MONTH), MONTH(CURDATE() - INTERVAL 7 MONTH) UNION ALL |
| | | SELECT YEAR(CURDATE() - INTERVAL 6 MONTH), MONTH(CURDATE() - INTERVAL 6 MONTH) UNION ALL |
| | | SELECT YEAR(CURDATE() - INTERVAL 5 MONTH), MONTH(CURDATE() - INTERVAL 5 MONTH) UNION ALL |
| | | SELECT YEAR(CURDATE() - INTERVAL 4 MONTH), MONTH(CURDATE() - INTERVAL 4 MONTH) UNION ALL |
| | | SELECT YEAR(CURDATE() - INTERVAL 3 MONTH), MONTH(CURDATE() - INTERVAL 3 MONTH) UNION ALL |
| | | SELECT YEAR(CURDATE() - INTERVAL 2 MONTH), MONTH(CURDATE() - INTERVAL 2 MONTH) UNION ALL |
| | | SELECT YEAR(CURDATE() - INTERVAL 1 MONTH), MONTH(CURDATE() - INTERVAL 1 MONTH) UNION ALL |
| | | SELECT YEAR(CURDATE()), MONTH(CURDATE()) |
| | | ) d |
| | | LEFT JOIN |
| | | ( |
| | | SELECT insertTime,payMoney |
| | | FROM t_order_taxi |
| | | UNION ALL |
| | | SELECT insertTime,payMoney |
| | | FROM t_order_private_car |
| | | UNION ALL |
| | | SELECT insertTime,payMoney |
| | | FROM t_order_cross_city |
| | | UNION ALL |
| | | SELECT addTime AS insertTime,money AS payMoney |
| | | FROM app_order_ride |
| | | ) t |
| | | ON YEAR(t.insertTime) = d.year |
| | | AND MONTH(t.insertTime) = d.month |
| | | |
| | | GROUP BY d.year, d.month |
| | | ORDER BY d.year, d.month |
| | | </if> |
| | | </select> |
| | | |
| | | <select id="orderDayHourCount" resultType="com.stylefeng.guns.modular.system.response.TOrderStatisticsCountVo"> |
| | | -- 6、统计当日各时段订单量 |
| | | SELECT |
| | | LPAD(h.hour, 2, '0') AS dateStr, |
| | | COUNT(t.insertTime) AS totalCount, |
| | | IFNULL(SUM(t.payMoney),0) AS totalMoney |
| | | FROM |
| | | ( |
| | | SELECT 0 AS hour UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 |
| | | UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 |
| | | UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 |
| | | UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15 |
| | | UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19 |
| | | UNION ALL SELECT 20 UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL SELECT 23 |
| | | ) h |
| | | LEFT JOIN |
| | | ( |
| | | SELECT insertTime, payMoney |
| | | FROM t_order_taxi |
| | | WHERE insertTime >= CURDATE() |
| | | AND insertTime < DATE_ADD(CURDATE(), INTERVAL 1 DAY) |
| | | UNION ALL |
| | | SELECT insertTime, payMoney |
| | | FROM t_order_private_car |
| | | WHERE insertTime >= CURDATE() |
| | | AND insertTime < DATE_ADD(CURDATE(), INTERVAL 1 DAY) |
| | | UNION ALL |
| | | SELECT insertTime, payMoney |
| | | FROM t_order_cross_city |
| | | WHERE insertTime >= CURDATE() |
| | | AND insertTime < DATE_ADD(CURDATE(), INTERVAL 1 DAY) |
| | | UNION ALL |
| | | SELECT addTime AS insertTime, money AS payMoney |
| | | FROM app_order_ride |
| | | WHERE addTime >= CURDATE() |
| | | AND addTime < DATE_ADD(CURDATE(), INTERVAL 1 DAY) |
| | | ) t |
| | | ON HOUR(t.insertTime) = h.hour |
| | | GROUP BY h.hour |
| | | ORDER BY h.hour |
| | | </select> |
| | | |
| | | <select id="driverCarStatistics" resultType="com.stylefeng.guns.modular.system.response.TOrderStatisticsCarVo"> |
| | | -- 7、统计今日/本周/本月司机排名 |
| | | SELECT |
| | | tc.carLicensePlate as carLicensePlate, |
| | | COUNT(1) AS totalCount |
| | | FROM ( |
| | | SELECT carId, insertTime FROM t_order_taxi |
| | | UNION ALL |
| | | SELECT carId, insertTime FROM t_order_private_car |
| | | UNION ALL |
| | | SELECT carId, insertTime FROM t_order_cross_city |
| | | ) t LEFT JOIN t_car tc ON t.carId = tc.id |
| | | WHERE |
| | | t.carId IS NOT NULL |
| | | <if test="null != type and 1 == type"> |
| | | AND t.insertTime >= CURDATE() |
| | | AND t.insertTime < DATE_ADD(CURDATE(), INTERVAL 1 DAY) |
| | | </if> |
| | | <if test="null != type and 2 == type"> |
| | | AND t.insertTime >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) |
| | | AND t.insertTime < DATE_ADD(DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY), INTERVAL 7 DAY) |
| | | </if> |
| | | <if test="null != type and 3 == type"> |
| | | t.insertTime >= DATE_FORMAT(CURDATE(), '%Y-%m-01') |
| | | AND t.insertTime < DATE_ADD(DATE_FORMAT(CURDATE(), '%Y-%m-01'), INTERVAL 1 MONTH) |
| | | </if> |
| | | GROUP BY tc.carLicensePlate |
| | | ORDER BY orderCount DESC |
| | | </select> |
| | | |
| | | <select id="passengerStatistics" resultType="com.stylefeng.guns.modular.system.response.TOrderStatisticsPassengerVo"> |
| | | -- 8、今日乘客排名 |
| | | SELECT |
| | | t.passengersPhone as passengersPhone, |
| | | COUNT(1) AS orderCount as totalCount, |
| | | SUM( |
| | | CASE WHEN (source <> 'ride' AND state IN (8,9)) OR (source = 'ride' AND state = 5) |
| | | THEN 1 ELSE 0 END |
| | | ) AS finishCount |
| | | FROM ( |
| | | SELECT passengersPhone, insertTime, state, 'taxi' AS source |
| | | FROM t_order_taxi |
| | | UNION ALL |
| | | SELECT passengersPhone, insertTime, state, 'private' AS source |
| | | FROM t_order_private_car |
| | | UNION ALL |
| | | SELECT passengersPhone, insertTime, state, 'cross' AS source |
| | | FROM t_order_cross_city |
| | | UNION ALL |
| | | SELECT lxPhone AS passengersPhone, addTime as insertTime, state, 'ride' AS source |
| | | FROM app_order_ride |
| | | ) t |
| | | WHERE |
| | | t.passengersPhone IS NOT NULL |
| | | <if test="null != type and 1 == type"> |
| | | AND t.insertTime >= CURDATE() |
| | | AND t.insertTime < DATE_ADD(CURDATE(), INTERVAL 1 DAY) |
| | | </if> |
| | | <if test="null != type and 2 == type"> |
| | | AND t.insertTime >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) |
| | | AND t.insertTime < DATE_ADD(DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY), INTERVAL 7 DAY) |
| | | </if> |
| | | <if test="null != type and 3 == type"> |
| | | AND t.insertTime >= DATE_FORMAT(CURDATE(), '%Y-%m-01') |
| | | AND t.insertTime < DATE_ADD(DATE_FORMAT(CURDATE(), '%Y-%m-01'), INTERVAL 1 MONTH) |
| | | </if> |
| | | GROUP BY t.passengersPhone |
| | | ORDER BY orderCount DESC |
| | | </select> |
| | | |
| | | </mapper> |