Przeglądaj źródła

fix bug of '修改包含concat语法sql' on 2021.3.1

jiequan.bi 4 lat temu
rodzic
commit
ed6426e85b

+ 196 - 229
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/xml/BytedanceHomepageMapper.xml

@@ -4,262 +4,229 @@
 
 
     <select id="queryTodaySumReportBy" resultType="com.alibaba.fastjson.JSONObject">
-       SELECT
-	     ROUND(sum(cost),2) cost,
-	     sum(show_num) showNum,
-	     sum(click) click,
-	     max(stat_hour) maxHour
-       FROM
-	      ctop_bytedance_report_advertiser_hourly
-       WHERE
-	      stat_datetime = #{statDate}
-      </select>
+        SELECT ROUND(sum(cost), 2) cost,
+               sum(show_num)       showNum,
+               sum(click)          click,
+               max(stat_hour)      maxHour
+        FROM ctop_bytedance_report_advertiser_hourly
+        WHERE stat_datetime = #{statDate}
+    </select>
 
     <select id="queryTodaySumByHour" resultType="com.alibaba.fastjson.JSONObject">
-        SELECT
-            ROUND(sum(cost),2) cost,
-            sum(show_num) showNum,
-            sum(click) click
-        FROM
-            ctop_bytedance_report_advertiser_hourly
-        WHERE
-            stat_hour &lt;= #{hour}
+        SELECT ROUND(sum(cost), 2) cost,
+               sum(show_num)       showNum,
+               sum(click)          click
+        FROM ctop_bytedance_report_advertiser_hourly
+        WHERE stat_hour &lt;= #{hour}
     </select>
 
     <select id="queryTodayDetailReportBy" resultType="com.alibaba.fastjson.JSONObject">
-        SELECT
-            stat_datetime statDate,
-            stat_hour statHour,
-            ROUND(sum(cost), 2) cost,
-            sum(show_num) showNum,
-            sum(click) click,
-            CASE
-                WHEN (click / show_num) IS NULL THEN
-                    0
-                ELSE
-                    CONCAT(
-                            ROUND(
-                                    (click / show_num) * 100,
-                                    2
-                                ),
-                            '%'
-                        )
-                END AS 'clickRate',
-            CASE
-                WHEN (cost / show_num) IS NULL THEN
-                    0
-                ELSE
-                    ROUND(
-                            (cost / show_num) * 1000,
-                            2
-                        )
-                END AS 'cpm',
-            CASE
-                WHEN (click / cost) IS NULL THEN
-                    0
-                ELSE
-                    ROUND((cost / click), 2)
-                END AS 'cp'
-        FROM
-            ctop_bytedance_report_advertiser_hourly
-        WHERE
-            stat_datetime = #{statDate}
-        GROUP BY
-            stat_hour
-        ORDER BY
-            stat_hour ASC
+        SELECT stat_datetime       statDate,
+               stat_hour           statHour,
+               ROUND(sum(cost), 2) cost,
+               sum(show_num)       showNum,
+               sum(click)          click,
+               CASE
+                   WHEN (click / show_num) IS NULL THEN
+                       0
+                   ELSE
+                       CONCAT(
+                               cast(
+                                       ROUND(
+                                               (click / show_num) * 100,
+                                               2
+                                           ) as char),
+                               '%'
+                           )
+                   END AS          'clickRate',
+               CASE
+                   WHEN (cost / show_num) IS NULL THEN
+                       0
+                   ELSE
+                       ROUND(
+                               (cost / show_num) * 1000,
+                               2
+                           )
+                   END AS          'cpm',
+               CASE
+                   WHEN (click / cost) IS NULL THEN
+                       0
+                   ELSE
+                       ROUND((cost / click), 2)
+                   END AS          'cp'
+        FROM ctop_bytedance_report_advertiser_hourly
+        WHERE stat_datetime = #{statDate}
+        GROUP BY stat_hour
+        ORDER BY stat_hour ASC
 
     </select>
 
     <select id="querySumByStartEndDate" resultType="com.alibaba.fastjson.JSONObject">
-       SELECT
-         ROUND(sum(cost), 2) cost,
-         sum(show_num) showNum,
-         sum(click) click
-       FROM
-         ctop_bytedance_report_advertiser_daily
-       WHERE
-         stat_datetime &lt;= #{endDate} '00:00:00'
-       AND
-         stat_datetime &gt;= #{startDate}
+        SELECT ROUND(sum(cost), 2) cost,
+               sum(show_num)       showNum,
+               sum(click)          click
+        FROM ctop_bytedance_report_advertiser_daily
+        WHERE stat_datetime &lt;= #{endDate} '00:00:00'
+          AND stat_datetime &gt;= #{startDate}
     </select>
 
     <select id="queryDetailByStartEndDate" resultType="com.alibaba.fastjson.JSONObject">
-       SELECT
-           ROUND(sum(cost), 2) cost,
-           sum(show_num) showNum,
-           sum(click) click,
-           CASE
-               WHEN (sum(click) / sum(show_num)) IS NULL THEN
-                   0
-               ELSE
-                   CONCAT(
-                           ROUND(
-                                   (sum(click) / sum(show_num)) * 100,
-                                   2
-                               ),
-                           '%'
-                       )
-               END AS 'clickRate',
-           CASE
-               WHEN (sum(cost) / sum(show_num)) IS NULL THEN
-                   0
-               ELSE
-                   ROUND(
-                           (sum(cost) / sum(show_num)) * 1000,
-                           2
-                       )
-               END AS 'cpm',
-           CASE
-               WHEN (sum(click) / sum(cost)) IS NULL THEN
-                   0
-               ELSE
-                   ROUND((sum(cost) / sum(click)), 2)
-               END AS 'cp',
-         DATE_FORMAT(stat_datetime,'%Y-%m-%d') statDate
-       FROM
-         ctop_bytedance_report_advertiser_daily
-       WHERE
-            stat_datetime &lt;= #{endDate} '00:00:00'
-       AND  stat_datetime &gt;= #{startDate}
-       group by stat_datetime
-       order by stat_datetime asc
+        SELECT ROUND(sum(cost), 2)                    cost,
+               sum(show_num)                          showNum,
+               sum(click)                             click,
+               CASE
+                   WHEN (sum(click) / sum(show_num)) IS NULL THEN
+                       0
+                   ELSE
+                       CONCAT(
+                               cast(
+                                       ROUND(
+                                               (sum(click) / sum(show_num)) * 100,
+                                               2
+                                           ) as char),
+                               '%'
+                           )
+                   END AS                             'clickRate',
+               CASE
+                   WHEN (sum(cost) / sum(show_num)) IS NULL THEN
+                       0
+                   ELSE
+                       ROUND(
+                               (sum(cost) / sum(show_num)) * 1000,
+                               2
+                           )
+                   END AS                             'cpm',
+               CASE
+                   WHEN (sum(click) / sum(cost)) IS NULL THEN
+                       0
+                   ELSE
+                       ROUND((sum(cost) / sum(click)), 2)
+                   END AS                             'cp',
+               DATE_FORMAT(stat_datetime, '%Y-%m-%d') statDate
+        FROM ctop_bytedance_report_advertiser_daily
+        WHERE stat_datetime &lt;= #{endDate} '00:00:00'
+          AND stat_datetime &gt;= #{startDate}
+        group by stat_datetime
+        order by stat_datetime asc
     </select>
 
     <select id="queryDetailGroupMonthByDate" resultType="com.alibaba.fastjson.JSONObject">
-       SELECT
-           ROUND(sum(cost), 2) cost,
-           sum(show_num) showNum,
-           sum(click) click,
-           CASE
-               WHEN (sum(click) / sum(show_num)) IS NULL THEN
-                   0
-               ELSE
-                   CONCAT(
-                           ROUND(
-                                   (sum(click) / sum(show_num)) * 100,
-                                   2
-                               ),
-                           '%'
-                       )
-               END AS 'clickRate',
-           CASE
-               WHEN (sum(cost) / sum(show_num)) IS NULL THEN
-                   0
-               ELSE
-                   ROUND(
-                           (sum(cost) / sum(show_num)) * 1000,
-                           2
-                       )
-               END AS 'cpm',
-           CASE
-               WHEN (sum(click) / sum(cost)) IS NULL THEN
-                   0
-               ELSE
-                   ROUND((sum(cost) / sum(click)), 2)
-               END AS 'cp',
-         DATE_FORMAT(stat_datetime,'%Y-%m') statDate
-       FROM
-         ctop_bytedance_report_advertiser_daily
-       WHERE
-         stat_datetime &lt;= #{endDate} '00:00:00'
-       AND
-         stat_datetime &gt;= #{startDate}
-      group by DATE_FORMAT(stat_datetime,'%Y-%m')
-      order by stat_datetime asc
+        SELECT ROUND(sum(cost), 2)                 cost,
+               sum(show_num)                       showNum,
+               sum(click)                          click,
+               CASE
+                   WHEN (sum(click) / sum(show_num)) IS NULL THEN
+                       0
+                   ELSE
+                       CONCAT(
+                               cast(
+                                       ROUND(
+                                               (sum(click) / sum(show_num)) * 100,
+                                               2
+                                           ) as char),
+                               '%'
+                           )
+                   END AS                          'clickRate',
+               CASE
+                   WHEN (sum(cost) / sum(show_num)) IS NULL THEN
+                       0
+                   ELSE
+                       ROUND(
+                               (sum(cost) / sum(show_num)) * 1000,
+                               2
+                           )
+                   END AS                          'cpm',
+               CASE
+                   WHEN (sum(click) / sum(cost)) IS NULL THEN
+                       0
+                   ELSE
+                       ROUND((sum(cost) / sum(click)), 2)
+                   END AS                          'cp',
+               DATE_FORMAT(stat_datetime, '%Y-%m') statDate
+        FROM ctop_bytedance_report_advertiser_daily
+        WHERE stat_datetime &lt;= #{endDate} '00:00:00'
+          AND stat_datetime &gt;= #{startDate}
+        group by DATE_FORMAT(stat_datetime, '%Y-%m')
+        order by stat_datetime asc
     </select>
 
     <select id="queryDetailGroupDayByMonth" resultType="com.alibaba.fastjson.JSONObject">
-        SELECT
-            ROUND(sum(cost), 2) cost,
-            sum(show_num) showNum,
-            sum(click) click,
-            CASE
-                WHEN (sum(click) / sum(show_num)) IS NULL THEN
-                    0
-                ELSE
-                    CONCAT(
-                            ROUND(
-                                    (sum(click) / sum(show_num)) * 100,
-                                    2
-                                ),
-                            '%'
-                        )
-                END AS 'clickRate',
-            CASE
-                WHEN (sum(cost) / sum(show_num)) IS NULL THEN
-                    0
-                ELSE
-                    ROUND(
-                            (sum(cost) / sum(show_num)) * 1000,
-                            2
-                        )
-                END AS 'cpm',
-            CASE
-                WHEN (sum(click) / sum(cost)) IS NULL THEN
-                    0
-                ELSE
-                    ROUND((sum(cost) / sum(click)), 2)
-                END AS 'cp',
-         DATE_FORMAT(stat_datetime,'%Y-%m-%d') statDate,
-         SUBSTR(DATE_FORMAT(stat_datetime,'%Y-%m-%d') FROM 9 FOR 2) day
-       FROM
-         ctop_bytedance_report_advertiser_daily
-       WHERE
-         stat_datetime like '${month}%'
-      group by DATE_FORMAT(stat_datetime,'%Y-%m-%d')
-      order by stat_datetime asc
+        SELECT ROUND(sum(cost), 2)                                         cost,
+               sum(show_num)                                               showNum,
+               sum(click)                                                  click,
+               CASE
+                   WHEN (sum(click) / sum(show_num)) IS NULL THEN
+                       0
+                   ELSE
+                       CONCAT(
+                               cast(
+                                       ROUND(
+                                               (sum(click) / sum(show_num)) * 100,
+                                               2
+                                           ) as char),
+                               '%'
+                           )
+                   END AS                                                  'clickRate',
+               CASE
+                   WHEN (sum(cost) / sum(show_num)) IS NULL THEN
+                       0
+                   ELSE
+                       ROUND(
+                               (sum(cost) / sum(show_num)) * 1000,
+                               2
+                           )
+                   END AS                                                  'cpm',
+               CASE
+                   WHEN (sum(click) / sum(cost)) IS NULL THEN
+                       0
+                   ELSE
+                       ROUND((sum(cost) / sum(click)), 2)
+                   END AS                                                  'cp',
+               DATE_FORMAT(stat_datetime, '%Y-%m-%d')                      statDate,
+               SUBSTR(DATE_FORMAT(stat_datetime, '%Y-%m-%d') FROM 9 FOR 2) day
+        FROM ctop_bytedance_report_advertiser_daily
+        WHERE stat_datetime like '${month}%'
+        group by DATE_FORMAT(stat_datetime, '%Y-%m-%d')
+        order by stat_datetime asc
     </select>
 
     <select id="queryTopCost" resultType="com.alibaba.fastjson.JSONObject">
-       SELECT
-         t2.auth_name as authName,
-         ROUND(sum(t1.cost), 2) cost
-       FROM
-         ctop_bytedance_report_advertiser_daily t1
-       LEFT JOIN
-         ctop_user_allocation t2 ON t1.advertiser_id=t2.account_id
-       WHERE
-         stat_datetime &lt;= #{endDate} '00:00:00'
-       AND
-         stat_datetime &gt;= #{startDate}
-       GROUP BY t1.advertiser_id
-       ORDER BY sum(t1.cost) DESC
-       limit #{rank}
+        SELECT t2.auth_name as        authName,
+               ROUND(sum(t1.cost), 2) cost
+        FROM ctop_bytedance_report_advertiser_daily t1
+                 LEFT JOIN
+             ctop_user_allocation t2 ON t1.advertiser_id = t2.account_id
+        WHERE stat_datetime &lt;= #{endDate} '00:00:00'
+          AND stat_datetime &gt;= #{startDate}
+        GROUP BY t1.advertiser_id
+        ORDER BY sum(t1.cost) DESC
+        limit #{rank}
     </select>
 
     <select id="queryTopClick" resultType="com.alibaba.fastjson.JSONObject">
-       SELECT
-         t2.auth_name as authName,
-         ROUND(sum(t1.click), 2) click
-       FROM
-         ctop_bytedance_report_advertiser_daily t1
-       LEFT JOIN
-         ctop_user_allocation t2 ON t1.advertiser_id=t2.account_id
-       WHERE
-         stat_datetime &lt;= #{endDate} '00:00:00'
-       AND
-         stat_datetime &gt;= #{startDate}
-       GROUP BY t1.advertiser_id
-       ORDER BY sum(t1.click) DESC
-       limit #{rank}
+        SELECT t2.auth_name as         authName,
+               ROUND(sum(t1.click), 2) click
+        FROM ctop_bytedance_report_advertiser_daily t1
+                 LEFT JOIN
+             ctop_user_allocation t2 ON t1.advertiser_id = t2.account_id
+        WHERE stat_datetime &lt;= #{endDate} '00:00:00'
+          AND stat_datetime &gt;= #{startDate}
+        GROUP BY t1.advertiser_id
+        ORDER BY sum(t1.click) DESC
+        limit #{rank}
     </select>
 
     <select id="queryTopShowNum" resultType="com.alibaba.fastjson.JSONObject">
-       SELECT
-         t2.auth_name as authName,
-         ROUND(sum(t1.show_num), 2) showNum
-       FROM
-         ctop_bytedance_report_advertiser_daily t1
-       LEFT JOIN
-         ctop_user_allocation t2 ON t1.advertiser_id=t2.account_id
-       WHERE
-         stat_datetime &lt;= #{endDate} '00:00:00'
-       AND
-         stat_datetime &gt;= #{startDate}
-       GROUP BY t1.advertiser_id
-       ORDER BY sum(t1.show_num) DESC
-       limit #{rank}
+        SELECT t2.auth_name as            authName,
+               ROUND(sum(t1.show_num), 2) showNum
+        FROM ctop_bytedance_report_advertiser_daily t1
+                 LEFT JOIN
+             ctop_user_allocation t2 ON t1.advertiser_id = t2.account_id
+        WHERE stat_datetime &lt;= #{endDate} '00:00:00'
+          AND stat_datetime &gt;= #{startDate}
+        GROUP BY t1.advertiser_id
+        ORDER BY sum(t1.show_num) DESC
+        limit #{rank}
     </select>
 
 </mapper>