展示型网站可以优化吗,给别人做网站如何收费,网站建设情况检查报告,重庆网站制作济南最近在做账单统计的需求#xff0c;需要写较多的sql#xff0c;也用到了很多以前没有用过的sql用法#xff0c;通过本篇文章进行总结。 1.SUM() 和 CASE WHEN…
SUM(CASE WHEN change_type -1 THEN total_amount ELSE 0 END) AS totalExpenditure这是一个典型的用法#… 最近在做账单统计的需求需要写较多的sql也用到了很多以前没有用过的sql用法通过本篇文章进行总结。 1.SUM() 和 CASE WHEN…
SUM(CASE WHEN change_type -1 THEN total_amount ELSE 0 END) AS totalExpenditure这是一个典型的用法通过 SUM() 结合 CASE WHEN 条件对满足条件的行的某个字段进行求和。在这个例子中对于 change_type -1 的行将其 total_amount 字段进行求和而对于不满足条件的行将其置为0。最终获得总支出。
2.COUNT() 和 CASE WHEN…
COUNT(CASE WHEN v_type -1 THEN -1 END) AS expenditureCount这个用法是通过 COUNT() 结合 CASE WHEN统计满足条件的行数。在这个例子中对于 v_type -1 的行返回 -1最后通过 COUNT() 统计 -1 的数量得到支出的个数。
3.COALESCE()
undefined COALESCE(SUM(total_amount),0.0) as totalAmountCOALESCE() 函数用于处理 NULL 值如果 SUM(total_amount) 为 NULL则将其替换为 0.0。这样可以避免在统计过程中出现 NULL 值导致的问题。
4.BETWEE
undefined stat_time BETWEEN #{startOfTime} AND #{endOfTime}BETWEEN 用于筛选某个范围内的值。在这个例子中筛选出 stat_time 位于 startOfTime 和 endOfTime 之间的记录包括这两个时间点。
5.UNION
SELECT ...
UNION
SELECT ...
UNION 用于合并两个查询的结果集去除重复的行。在这个例子中通过两个 SELECT 语句统计不同条件下的数据并将结果集合并在一起相当于求并集。
6. GROUP BY a,b 组合分组 GROUP BY a,b;GROUP BY 用于将结果集按照指定的列进行分组。在这个例子中根据列 a 和 b 进行组合分组。
7. 正则表达式 CASE WHEN causetype A AND comment REGEXP gid为【([0-9])】的xxxx THEN CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(comment, gid为【, -1), 】, 1) AS UNSIGNED) ELSE 0 END AS ngid, 这里使用了正则表达式 (REGEXP) 来匹配符合特定条件的 comment 字段。当 causetype ‘A’ 且 comment 字段符合正则表达式时提取出其中的 gid 值。如果不符合条件则返回 0。