最近用MySQL做统计的需求比较多,这里整理一些常用的场景方便后期查阅,同时也是抛砖引玉的过程。
其中包括普通的分组统计,连续的每日统计,区间范围统计。
目录
普通分组统计
场景一:根据订单状态统计订单数量。
一个很常见,也很简单的统计需求。其中状态字段是订单实体的一个属性。参考代码:(Kotlin语法
@Query("SELECT status, COUNT(id) FROM Order GROUP BY status")
fun summaryOrderByStatus(): Array>?
场景二:根据订单中商品类目统计订单数量和金额。
比场景一稍微麻烦了一点,商品字段是订单实体的一个属性,而类目字段才是商品实体的一个属性。参考代码:(Kotlin语法)@Query("SELECT commodity.category, COUNT(id), SUM(finalPrice) FROM Order GROUP BY commodity.category")
fun summaryOrderByCommodityCategory(): Array>?
小结:
分组统计少不了GROUP BY语句,如果需要加查询条件,请在其前面添加 WHERE 语句。
统计数量用COUNT,统计总和用SUM函数,有GROUP BY的地方,少不了这些聚合函数。
统计返回的结果是字符串类型的二维数组。
以内嵌属性分组,如果是SpringDataJpa框架,则可以直接通过”实体类.属性名”的方式。
每日统计