zoukankan      html  css  js  c++  java
  • 记录一下使用 spring data jpa 的query注解中 count(sum)附带条件查询

    有一条 sql 语句 如下 

    select district_coordinate,city_coordinate,province_coordinate,sum(pl.plot_type ='FUNC'),sum(pl.plot_type ='FARM')  from t_plot pl left join t_position pt on pl.position_id  = pt.id group by province_coordinate;

    需要在group by 之后统计PlotType 为 FUNC 和 FARM 的个数

    由于效率问题想在后端只执行一次sql 便能够查询出结果,

    因此建立一个 DTO,结构如下

    
    
    /**
    * @author liujunhong
    */

    @Data @AllArgsConstructor
    public class PlotCountSummary { private String provinceCoordinate; private String cityCoordinate; private String districtCoordinate; /** * 农场个数 */ private Object farmCount; /** * 功能区个数 */ private Object funcCount; }

    查询语句如下

      @Query("select new com.fieldsay.digitfarm.dto.PlotCountSummary(pt.provinceCoordinate,pt.cityCoordinate,pt.districtCoordinate,count(CASE WHEN pl.plotType='FARM' THEN 1 END) ,count(CASE WHEN pl.plotType='FUNC' THEN 1 END)) from Plot pl left join Position pt on pl.position = pt group by province_coordinate")
        List<PlotCountSummary> findPlotCountCustom();

    核心内容是在@query 注解当中使用 sum 并且带条件统计,但是由于jpa 本身不支持 sum 带条件统计, 所以需要使用 

    count(CASE WHEN pl.plotType='FARM' THEN 1 END)


  • 相关阅读:
    [LuoGu] P1004 方格取数
    [LuoGu] P1018 乘积最大
    [LuoGu] P2758 编辑距离
    [JZOJ] 01知多少
    [LuoGu] P1731 生日蛋糕
    $mathcal{Const,Inline,Register}$用法总结
    T2027 蜈蚣
    T57274 黑暗城堡
    P2312 解方程
    AT2412 最大の和
  • 原文地址:https://www.cnblogs.com/handsomejunhong/p/12378563.html
Copyright © 2011-2022 走看看