Browse Source

首页sql优化

zouxuan 1 year ago
parent
commit
bd440d3baf

+ 32 - 31
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -233,7 +233,7 @@
 				 WHERE
 					 mg.status_ IN ( 'PREPARE', 'PROGRESS' ) and sr.tenant_id_ = #{tenantId}
 				   AND sr.music_group_status_ = 'NORMAL'
-				   AND DATE_FORMAT(sr.create_time_, '%Y-%m-%d')<=#{dayStr}
+				   AND sr.create_time_ <= CONCAT(#{dayStr},' 23:59:59')
 			 ) UNION ALL
 			(
 			 SELECT DISTINCT
@@ -245,7 +245,7 @@
 				 cs.del_flag_ = '0' AND cs.pre_course_flag_ = 0 and cs.tenant_id_ = #{tenantId} AND cs.is_lock_ = 0
 			   AND cs.merge_flag_ IN (0,1)
 			   AND cssp.group_type_ IN ('VIP', 'PRACTICE')
-			   AND DATE_FORMAT(cssp.create_time_, '%Y-%m-%d')<=#{dayStr}
+			   AND cssp.create_time_ <= CONCAT(#{dayStr},' 23:59:59')
 				AND cs.class_date_ >= #{courseStartDay}
 			)) u
 			LEFT JOIN student st ON u.user_id_ = st.user_id_
@@ -268,7 +268,7 @@
 			LEFT JOIN sys_user su ON stu.user_id_=su.id_
 		WHERE
 			su.del_flag_='0' and su.tenant_id_ = #{tenantId}
-		  AND DATE_FORMAT(stu.create_time_, '%Y-%m-%d')<=#{dayStr}
+		  AND stu.create_time_ <= CONCAT(#{dayStr},' 23:59:59')
 		GROUP BY su.organ_id_
 		ORDER BY su.organ_id_;
 	</select>
@@ -284,7 +284,7 @@
 			student stu
 			LEFT JOIN sys_user su ON stu.user_id_=su.id_
 		WHERE su.del_flag_='0' and su.tenant_id_ = #{tenantId}
-		  AND DATE_FORMAT(stu.create_time_, '%Y-%m-%d')=#{dayStr}
+		  AND stu.create_time_ BETWEEN CONCAT(#{dayStr},' 00:00:00') AND CONCAT(#{dayStr},' 23:59:59')
 		GROUP BY su.organ_id_
 		ORDER BY su.organ_id_;
 	</select>
@@ -302,7 +302,7 @@
 			LEFT JOIN student_payment_order spo ON stu.user_id_=spo.user_id_ AND status_='SUCCESS' AND actual_amount_>0
 		WHERE
 			su.del_flag_='0' and su.tenant_id_ = #{tenantId}
-			  AND DATE_FORMAT(stu.create_time_, '%Y-%m-%d')&lt;=#{dayStr}
+			  AND stu.create_time_ &lt;= CONCAT(#{dayStr},' 23:59:59')
 		GROUP BY su.organ_id_
 		ORDER BY su.organ_id_;
 	</select>
@@ -334,8 +334,8 @@
 		WHERE su.del_flag_='0' and sees.tenant_id_ = #{tenantId}
 		  	AND tea.job_nature_='FULL_TIME'
 			AND su.organ_id_ IS NOT NULL
-			AND DATE_FORMAT(sees.monday_, '%Y-%m-%d')&lt;=#{dayStr}
-			AND DATE_FORMAT(sees.sunday_, '%Y-%m-%d')&gt;=#{dayStr}
+			AND sees.monday_ &lt;= CONCAT(#{dayStr},' 23:59:59')
+			AND sees.sunday_ &gt;= CONCAT(#{dayStr},' 00:00:00')
 		GROUP BY su.organ_id_
 		ORDER BY su.organ_id_
 	</select>
@@ -351,9 +351,8 @@
 			music_group mg
 		WHERE
 			mg.del_flag_ = 0 and mg.tenant_id_ = #{tenantId}
-			AND mg.organ_id_ IS NOT NULL
 			AND mg.status_ = 'PROGRESS'
-			AND DATE_FORMAT(mg.create_time_, '%Y-%m-%d')&lt;=#{dayStr}
+			AND mg.create_time_ &lt;= CONCAT(#{dayStr},' 23:59:59')
 		GROUP BY
 			mg.organ_id_
 		ORDER BY
@@ -371,9 +370,8 @@
 		WHERE
 			del_flag_ = 0 and tenant_id_ = #{tenantId}
 			AND status_ = 'PROGRESS'
-			AND organ_id_ IS NOT NULL
 			<if test="dayStr!=null and dayStr!=''">
-				AND DATE_FORMAT(create_time_, '%Y-%m-%d') &lt;= #{dayStr}
+				AND create_time_ &lt;= CONCAT(#{dayStr},' 23:59:59')
 			</if>
 		GROUP BY
 			organ_id_
@@ -398,14 +396,14 @@
 			</if>
 			<if test="type!=null and type=='QUIT'">
 				AND sr.music_group_status_='QUIT'
-				AND DATE_FORMAT(sr.create_time_, '%Y-%m') &gt;= CONCAT(DATE_FORMAT(NOW(), '%Y'), '-01')
+				AND sr.create_time_ &gt;= CONCAT(DATE_FORMAT(NOW(), '%Y'), '-01-01 00:00:00')
 			</if>
 			<if test="type!=null and type=='ADD'">
 				AND sr.music_group_status_='NORMAL'
-				AND DATE_FORMAT(sr.create_time_, '%Y-%m') &gt;= CONCAT(DATE_FORMAT(NOW(), '%Y'), '-01')
+				AND sr.create_time_ &gt;= CONCAT(DATE_FORMAT(NOW(), '%Y'), '-01-01 00:00:00')
 			</if>
 			<if test="dayStr!=null and dayStr!=''">
-				AND DATE_FORMAT(sr.create_time_, '%Y-%m-%d') &lt;= #{dayStr}
+				AND sr.create_time_ &lt;= CONCAT(#{dayStr},' 23:59:59')
 			</if>
 		GROUP BY
 			mg.organ_id_
@@ -425,7 +423,7 @@
 			LEFT JOIN sys_user su ON su.id_ = t.id_
 		WHERE
 			su.del_flag_ = '0' and t.tenant_id_ = #{tenantId}
-		  	AND (t.demission_date_ IS NULl OR DATE_FORMAT(t.demission_date_, '%Y-%m-%d') &gt; #{dayStr})
+		  	AND (t.demission_date_ IS NULl OR t.demission_date_ &gt; CONCAT(#{dayStr},' 23:59:59'))
 		  	<if test="isDemission==null">
 				AND su.lock_flag_ = 0
 			</if>
@@ -437,7 +435,7 @@
 				AND t.job_nature_ = #{jobNature,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 			</if>
 			<if test="dayStr!=null and dayStr!=''">
-				AND DATE_FORMAT(t.create_time_, '%Y-%m-%d') &lt;= #{dayStr}
+				AND t.create_time_ &lt;= CONCAT(#{dayStr},' 23:59:59')
 			</if>
 		GROUP BY
 			t.organ_id_
@@ -592,13 +590,13 @@
 			LEFT JOIN course_schedule_student_payment s ON su.id_=s.user_id_
 			LEFT JOIN course_schedule m ON s.course_schedule_id_=m.id_
 		WHERE
-			m.del_flag_ = 0 and m.tenant_id_ = #{tenantId}
-			AND (m.is_lock_ = 0 OR m.is_lock_ IS NULL)
+			m.del_flag_ = '0' and m.tenant_id_ = #{tenantId}
+			AND m.is_lock_ = 0
 			AND su.organ_id_ IS NOT NULL
-			AND m.group_type_ IN ('VIP', 'PRACTICE')
+			AND s.group_type_ IN ('VIP', 'PRACTICE')
 			AND m.status_ = 'NOT_START'
 			<if test="dayStr!=null and dayStr!=''">
-				AND (DATE_FORMAT(s.create_time_, '%Y-%m-%d') &lt;= #{dayStr} OR YEAR(m.create_time_)=3000)
+				AND s.create_time_ &lt;= CONCAT(#{dayStr},' 23:59:59')
 			</if>
 		GROUP BY
 			su.organ_id_
@@ -619,13 +617,13 @@
 			LEFT JOIN course_schedule_student_payment cssp1 ON s.user_id_=cssp1.user_id_ AND cssp1.create_time_&lt;#{dayStr}
 			LEFT JOIN course_schedule m ON s.course_schedule_id_=m.id_
 		WHERE
-			m.del_flag_ = 0 and m.tenant_id_ = #{tenantId}
-			AND (m.is_lock_ = 0 OR m.is_lock_ IS NULL)
+			m.del_flag_ = '0' and m.tenant_id_ = #{tenantId}
+			AND m.is_lock_ = 0
 			AND cssp1.id_ IS NULL
 			AND su.organ_id_ IS NOT NULL
-			AND m.group_type_ IN ('VIP', 'PRACTICE')
+			AND s.group_type_ IN ('VIP', 'PRACTICE')
 			<if test="dayStr!=null and dayStr!=''">
-				AND DATE_FORMAT(s.create_time_, '%Y-%m-%d') = #{dayStr}
+				AND s.create_time_ BETWEEN CONCAT(#{dayStr},' 00:00:00') AND CONCAT(#{dayStr},' 23:59:59')
 			</if>
 		GROUP BY su.organ_id_
 		ORDER BY su.organ_id_;
@@ -1876,7 +1874,7 @@
 				AND mg.status_='PROGRESS'
 				AND sr.music_group_status_ = 'NORMAL'
 				<if test="dayStr!=null and dayStr!=''">
-					AND DATE(sr.create_time_)&lt;= #{dayStr}
+					AND sr.create_time_ &lt;= CONCAT(#{dayStr},' 23:59:59')
 				</if>)
 		UNION ALL
 		(
@@ -1892,7 +1890,7 @@
 				AND cs.status_ = 'NOT_START'
 				AND su.del_flag_ = '0'
 				<if test="dayStr!=null and dayStr!=''">
-					AND DATE(cssp.create_time_)&lt;= #{dayStr}
+					AND cssp.create_time_ &lt;= CONCAT(#{dayStr},' 23:59:59')
 				</if>)) t
 		WHERE t.user_id_ NOT IN (SELECT user_id_ FROM student WHERE subject_id_list_ REGEXP '21|25|26|27|28|29')
 		GROUP BY t.organ_id_
@@ -1909,7 +1907,7 @@
 			LEFT JOIN sys_user su ON cto.student_id_=su.id_
 		WHERE su.del_flag_='0' AND cto.status_ IN (1,2) and cto.tenant_id_ = #{tenantId}
 			<if test="dayStr!=null and dayStr!=''">
-				AND DATE(cto.create_time_)&lt;= #{dayStr}
+				AND cto.create_time_ &lt;= CONCAT(#{dayStr},' 23:59:59')
 			</if>
 		GROUP BY su.organ_id_
 	</select>
@@ -1925,7 +1923,7 @@
 		LEFT JOIN sys_user su ON cto.student_id_=su.id_
 		WHERE su.del_flag_='0' AND cto.status_ IN (1,2) and cto.tenant_id_ = #{tenantId}
 		<if test="dayStr!=null and dayStr!=''">
-			AND DATE(cto.create_time_)= #{dayStr}
+			AND cto.create_time_ BETWEEN CONCAT(#{dayStr},' 00:00:00') AND CONCAT(#{dayStr},' 23:59:59')
 		</if>
 		GROUP BY su.organ_id_
 	</select>
@@ -2034,7 +2032,8 @@
 		       'STUDENT_VIP_ORDER_NUM' data_type_,spo.user_id_ extend_info_,spo.tenant_id_
 		FROM (SELECT id_,user_id_,organ_id_,activity_id_,music_group_id_,calender_id_,type_,group_type_,
 		             DATE_FORMAT(create_time_,'%Y-%m-%d') create_time_,tenant_id_ FROM student_payment_order
-		WHERE status_ = 'SUCCESS' AND DATE_FORMAT(create_time_,'%Y-%m-%d') = #{dayStr} AND tenant_id_ = #{tenantId}) spo
+		WHERE status_ = 'SUCCESS' AND create_time_ BETWEEN CONCAT(#{dayStr},' 00:00:00') AND CONCAT(#{dayStr},' 23:59:59')
+		  AND tenant_id_ = #{tenantId}) spo
 		LEFT JOIN student_payment_order_detail spod ON spod.payment_order_id_ = spo.id_
 		LEFT JOIN vip_group_activity vga ON FIND_IN_SET(vga.id_,spo.activity_id_)
 		LEFT JOIN vip_group_category vgc ON vgc.id_ = vga.vip_group_category_id_list_
@@ -2055,7 +2054,8 @@
 			   'STUDENT_THEORY_ORDER_NUM' data_type_,spo.user_id_ extend_info_,spo.tenant_id_
 		FROM (SELECT id_,user_id_,organ_id_,activity_id_,music_group_id_,calender_id_,type_,group_type_,
 					 DATE_FORMAT(create_time_,'%Y-%m-%d') create_time_,tenant_id_ FROM student_payment_order
-			  WHERE status_ = 'SUCCESS' AND DATE_FORMAT(create_time_,'%Y-%m-%d') = #{dayStr} AND tenant_id_ = #{tenantId}) spo
+			  WHERE status_ = 'SUCCESS' AND create_time_ BETWEEN CONCAT(#{dayStr},' 00:00:00') AND CONCAT(#{dayStr},' 23:59:59')
+			     AND tenant_id_ = #{tenantId}) spo
 				 LEFT JOIN student_payment_order_detail spod ON spod.payment_order_id_ = spo.id_
 				 LEFT JOIN vip_group_activity vga ON FIND_IN_SET(vga.id_,spo.activity_id_)
 				 LEFT JOIN vip_group_category vgc ON vgc.id_ = vga.vip_group_category_id_list_
@@ -2075,7 +2075,8 @@
 			   'STUDENT_PRACTICE_ORDER_NUM' data_type_,spo.user_id_ extend_info_,spo.tenant_id_
 		FROM (SELECT id_,user_id_,organ_id_,activity_id_,music_group_id_,calender_id_,type_,group_type_,
 					 DATE_FORMAT(create_time_,'%Y-%m-%d') create_time_,tenant_id_ FROM student_payment_order
-			  WHERE status_ = 'SUCCESS' AND DATE_FORMAT(create_time_,'%Y-%m-%d') = #{dayStr} AND tenant_id_ = #{tenantId}) spo
+			  WHERE status_ = 'SUCCESS' AND create_time_ BETWEEN CONCAT(#{dayStr},' 00:00:00') AND CONCAT(#{dayStr},' 23:59:59')
+			    AND tenant_id_ = #{tenantId}) spo
 				 LEFT JOIN student_payment_order_detail spod ON spod.payment_order_id_ = spo.id_
 		WHERE spo.type_ = 'PRACTICE_GROUP_BUY' OR spo.type_ = 'PRACTICE_GROUP_RENEW' OR (spo.group_type_ = 'MUSIC' AND spod.type_ = 'PRACTICE')
 		GROUP BY spo.user_id_,spo.create_time_,spo.organ_id_;

+ 1 - 2
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -1835,8 +1835,7 @@
                                                  LEFT JOIN course_schedule cs on cssp.`course_schedule_id_` = cs.`id_`
                                                  LEFT JOIN `music_group` mg on mg.`id_` = cssp.`music_group_id_`
       WHERE cs.`group_type_` = 'MUSIC' AND cs.`status_` = 'OVER' AND mg.`status_` = 'PROGRESS' and mg.tenant_id_ = #{tenantId}
-      GROUP BY cssp.`user_id_` HAVING COUNT(cs.`id_`) > 4) 
-      <!-- AND sr.user_id_ NOT IN (SELECT user_id_ FROM student WHERE subject_id_list_ REGEXP '21|25|26|27|28|29') -->
+      GROUP BY cssp.`user_id_` HAVING COUNT(cs.`id_`) > 4)
     </select>
     <resultMap id="CloudTeacherActiveTargetJsonDto" type="com.ym.mec.biz.dal.dto.CloudTeacherActiveTargetJsonDto">
         <result property="targetNum" column="target_num_"/>