MonthlyCustomersDao.xml 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.kmall.admin.dao.statistics.MonthlyCustomersDao">
  4. <select id="queryMonthlyCustomers" resultType="com.kmall.admin.entity.MonthlySalesGrowthEntity" >
  5. SELECT
  6. o.merch_sn AS merchSn,
  7. m.merch_name AS merchName,
  8. sum( og.actual_payment_amount ) + sum(og.discounted_price)AS totalSales,
  9. sum( og.number) as totalNumber,
  10. count(DISTINCT o.pay_mobile) as totalCustomers,
  11. DATE_FORMAT(o.pay_time,'%Y-%m') as yearAndMonth
  12. FROM
  13. mall_order o
  14. LEFT JOIN mall_merch m ON o.merch_sn = m.merch_sn
  15. LEFT JOIN mall_order_goods og ON o.id = og.order_id
  16. <where>
  17. o.is_onffline_order = '1'
  18. AND o.order_biz_type = '10'
  19. AND o.pay_status = '2'
  20. and o.order_status = '300'
  21. AND DATE_FORMAT(o.pay_time,'%Y-%m') &gt;= #{startMonth}
  22. AND DATE_FORMAT(o.pay_time,'%Y-%m') &lt;= #{endMonth}
  23. <if test="merchSn != null">
  24. and m.merch_sn = #{merchSn}
  25. </if>
  26. </where>
  27. group by DATE_FORMAT(o.pay_time,'%Y-%m')
  28. </select>
  29. <select id="queryWeeklyCustomers" resultType="com.kmall.admin.entity.MonthlySalesGrowthEntity">
  30. SELECT
  31. o.merch_sn AS merchSn,
  32. m.merch_name AS merchName,
  33. sum( og.actual_payment_amount/ (1+og.goods_rate) ) + sum(og.discounted_price)AS totalSales,
  34. sum( og.number) as totalNumber,
  35. count(DISTINCT o.id) as totalCustomers,
  36. DATE_FORMAT(o.pay_time,'%Y-%u') as yearAndWeek
  37. FROM
  38. mall_order o
  39. LEFT JOIN mall_merch m ON o.merch_sn = m.merch_sn
  40. LEFT JOIN mall_order_goods og ON o.id = og.order_id
  41. <where>
  42. o.is_onffline_order = '1'
  43. AND o.order_biz_type = '10'
  44. AND o.pay_status = '2'
  45. AND DATE_FORMAT(o.pay_time,'%Y-%u') &gt;= #{startWeek}
  46. AND DATE_FORMAT(o.pay_time,'%Y-%u') &lt;= #{endWeek}
  47. <if test="merchSn != null">
  48. and m.merch_sn = #{merchSn}
  49. </if>
  50. </where>
  51. group by DATE_FORMAT(o.pay_time,'%Y-%u')
  52. </select>
  53. <select id="top10ForProduct" resultType="com.kmall.admin.entity.MonthlySalesGrowthEntity" >
  54. SELECT
  55. m.merch_name AS merchName,
  56. og.goods_name as goodsName,
  57. og.goods_specification_name_value as goodsSpecificationNameValue,
  58. sum( og.number ) AS sales
  59. FROM
  60. mall_order o
  61. LEFT JOIN mall_merch m ON o.merch_sn = m.merch_sn
  62. LEFT JOIN mall_order_goods og ON o.id = og.order_id
  63. <where>
  64. o.is_onffline_order = '1'
  65. AND o.order_biz_type = '10'
  66. AND o.pay_status = '2'
  67. <if test="month != null and month.trim() != ''">
  68. and DATE_FORMAT(o.pay_time,'%Y-%m') = #{month}
  69. </if>
  70. <if test="week != null and week.trim() != ''">
  71. and weekofyear(o.pay_time) = #{week}
  72. </if>
  73. <if test="merchSn != null">
  74. and m.merch_sn = #{merchSn}
  75. </if>
  76. </where>
  77. GROUP BY
  78. og.sku
  79. ORDER BY
  80. sales desc
  81. LIMIT 10
  82. </select>
  83. <select id="top10ByBrand" resultType="com.kmall.admin.entity.MonthlySalesGrowthEntity" >
  84. SELECT
  85. m.merch_name AS merchName,
  86. g.brand as brand,
  87. og.goods_specification_name_value as goodsSpecificationNameValue,
  88. sum( og.number ) AS sales
  89. FROM
  90. mall_order o
  91. LEFT JOIN mall_merch m ON o.merch_sn = m.merch_sn
  92. LEFT JOIN mall_order_goods og ON o.id = og.order_id
  93. LEFT JOIN mall_goods g ON g.id = og.goods_id
  94. <where>
  95. o.is_onffline_order = '1'
  96. AND o.order_biz_type = '10'
  97. AND o.pay_status = '2'
  98. <if test="startDate != null and startDate.trim() != ''">
  99. and DATE_FORMAT(o.pay_time,'%Y-%m-%d') &gt;= #{startDate}
  100. </if>
  101. <if test="endDate != null and endDate.trim() != ''">
  102. and DATE_FORMAT(o.pay_time,'%Y-%m-%d') &lt;= #{endDate}
  103. </if>
  104. <if test="merchSn != null">
  105. and m.merch_sn = #{merchSn}
  106. </if>
  107. </where>
  108. GROUP BY
  109. g.brand
  110. ORDER BY
  111. sales desc
  112. LIMIT 10
  113. </select>
  114. <select id="top10BySupplier" resultType="com.kmall.admin.entity.MonthlySalesGrowthEntity" >
  115. SELECT
  116. m.merch_name AS merchName,
  117. s.child_supplier_name as supplier,
  118. og.goods_specification_name_value as goodsSpecificationNameValue,
  119. sum( og.number ) AS sales
  120. FROM
  121. mall_order o
  122. LEFT JOIN mall_merch m ON o.merch_sn = m.merch_sn
  123. LEFT JOIN mall_order_goods og ON o.id = og.order_id
  124. LEFT JOIN mall_goods g ON g.id = og.goods_id
  125. LEFT JOIN mall_supplier s ON g.supplier_id = s.id
  126. <where>
  127. o.is_onffline_order = '1'
  128. AND o.order_biz_type = '10'
  129. AND o.pay_status = '2'
  130. <if test="startDate != null and startDate.trim() != ''">
  131. and DATE_FORMAT(o.pay_time,'%Y-%m') &gt;= #{startDate}
  132. </if>
  133. <if test="endDate != null and endDate.trim() != ''">
  134. and DATE_FORMAT(o.pay_time,'%Y-%m') &lt;= #{endDate}
  135. </if>
  136. <if test="merchSn != null">
  137. and m.merch_sn = #{merchSn}
  138. </if>
  139. </where>
  140. GROUP BY
  141. s.id
  142. ORDER BY
  143. sales desc
  144. LIMIT 10
  145. </select>
  146. <select id="salesByCategory" resultType="com.kmall.admin.entity.MonthlySalesGrowthEntity">
  147. SELECT
  148. sum( og.number ) AS sales,
  149. cg.NAME AS cgname
  150. FROM
  151. mall_order o
  152. LEFT JOIN mall_merch m ON o.merch_sn = m.merch_sn
  153. LEFT JOIN mall_order_goods og ON o.id = og.order_id
  154. LEFT JOIN mall_product_store_rela a ON a.goods_id = og.goods_id
  155. LEFT JOIN mall_category cg ON a.category_id = cg.id
  156. <where>
  157. o.is_onffline_order = '1'
  158. AND o.order_biz_type = '10'
  159. AND o.pay_status = '2'
  160. <if test="startDate != null and startDate.trim() != ''">
  161. and DATE_FORMAT(o.pay_time,'%Y-%m') &gt;= #{startDate}
  162. </if>
  163. <if test="endDate != null and endDate.trim() != ''">
  164. and DATE_FORMAT(o.pay_time,'%Y-%m') &lt;= #{endDate}
  165. </if>
  166. <if test="merchSn != null">
  167. and m.merch_sn = #{merchSn}
  168. </if>
  169. </where>
  170. GROUP BY
  171. cg.parent_id
  172. limit 20
  173. </select>
  174. <select id="monthlyCategory" resultType="com.kmall.admin.entity.MonthlySalesGrowthEntity" >
  175. SELECT
  176. sum( og.number ) AS sales,
  177. cg.NAME AS cgname,
  178. sum( o.order_price ) AS totalSales,
  179. DATE_FORMAT(o.pay_time,'%Y-%m') as yearAndMonth
  180. FROM
  181. mall_order o
  182. LEFT JOIN mall_order_goods og ON o.id = og.order_id
  183. LEFT JOIN mall_product_store_rela a ON a.goods_id = og.goods_id
  184. LEFT JOIN mall_category cg ON a.category_id = cg.id
  185. LEFT JOIN mall_merch m ON o.merch_sn = m.merch_sn
  186. <where>
  187. o.is_onffline_order = '1'
  188. AND o.order_biz_type = '10'
  189. AND o.pay_status = '2'
  190. AND DATE_FORMAT(o.pay_time,'%Y-%m') &gt;= #{startMonth}
  191. AND DATE_FORMAT(o.pay_time,'%Y-%m') &lt;= #{endMonth}
  192. <if test="merchSn != null">
  193. and m.merch_sn = #{merchSn}
  194. </if>
  195. </where>
  196. GROUP BY
  197. cg.parent_id,DATE_FORMAT(o.pay_time,'%Y-%m')
  198. </select>
  199. <select id="queryAvgSales" resultType="com.kmall.admin.entity.MonthlySalesGrowthEntity">
  200. select
  201. sku ,goodsName,total as totalNumber , saletime as salesMonth , avgSalesNumber , goodsNumber, stockNumber ,number,
  202. (goodsNumber + number) as totalCount,
  203. if(avgSalesNumber * #{monthNumber} &lt; ((avgSalesNumber + goodsNumber + number) - avgSalesNumber*#{size}) ,
  204. avgSalesNumber * #{monthNumber},
  205. (avgSalesNumber + goodsNumber + number) - (avgSalesNumber*#{size}) ) as predeterminedNumber
  206. from (
  207. SELECT
  208. sku,sum( number ) total ,DATE_FORMAT(og.create_time,'%Y-%m') saletime,
  209. sum( og.number ) /1 AS avgSalesNumber ,
  210. IFNULL((
  211. select g.goods_number
  212. from mall_goods g
  213. where g.sku = og.sku
  214. ),0) as goodsNumber,
  215. IFNULL((
  216. select sum(r.stock_num)
  217. from mall_product_store_rela r
  218. where r.sku = og.sku
  219. ),0) stockNumber,
  220. IFNULL((
  221. select sum(d.num)
  222. from mall_goods_transport_info_detail d
  223. where d.sku = og.sku
  224. ),0) as number,
  225. og.goods_name as goodsName
  226. FROM
  227. mall_order o
  228. LEFT JOIN mall_order_goods og ON o.id = og.order_id
  229. LEFT JOIN mall_merch m ON o.merch_sn = m.merch_sn
  230. <where>
  231. o.is_onffline_order = '1'
  232. AND o.order_biz_type = '10'
  233. AND o.pay_status = '2'
  234. AND DATE_FORMAT(og.create_time,'%Y-%m') &gt;= #{startMonth}
  235. and DATE_FORMAT(og.create_time,'%Y-%m') &lt;= #{endMonth}
  236. <if test="merchSn != null">
  237. and m.merch_sn = #{merchSn}
  238. </if>
  239. </where>
  240. group by sku,DATE_FORMAT(og.create_time,'%Y-%m')
  241. ) t
  242. </select>
  243. </mapper>