首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >QueryDSL select count() / count()如何~?

QueryDSL select count() / count()如何~?
EN

Stack Overflow用户
提问于 2020-08-24 12:48:15
回答 1查看 434关注 0票数 0

选择

代码语言:javascript
运行
复制
      (select count(*) from table2 where table2.table2Seq = table1.table1Seq) as count1,

      (select count(*) from table2 where table2.table2Seq = table1.table1Seq and table2Yn = true) as count2,

      (select count(*) from table2 where table2.table2Seq = table1.table1Seq) / (select count(*) from table2 where table2.table2Seq = table1.table1Seq and table2Yn = true) as count3

从…

代码语言:javascript
运行
复制
      table1

排序依据

代码语言:javascript
运行
复制
     count3

**我想要这个查询。你是怎么把它变成queryDSL的?我想对子查询中的计数器除以子查询中的计数器进行排序。**

代码语言:javascript
运行
复制
NumberPath<Long> count1 = Expressions.numberPath(Long.class, “count1”);
NumberPath<Long> count2 = Expressions.numberPath(Long.class, “count2”);
NumberPath<Long> count3 = Expressions.numberPath(Long.class, “count3”);

JPQLQuery<OnlineTrainingCourseDto> query = getQuerydsl().createQuery()
    .select(
        new Dto(
            ExpressionUtils.as(
                JPAExpressions.select(table2.table2Seq.count())
                        .from(table2)
                        .where(table2.table2Seq.eq(table1.table1Seq)),
                count1
            ),
            ExpressionUtils.as(
                JPAExpressions.select(table2.table2Seq.count())
                        .from(table2)
                        .where(table2.table2Seq.eq(table1.table1Seq)
                        .and(table2.table2Yn.eq(true))),
                count2
            ),
            
            ***????? count1 / count2 as count3 ?????***

            )
        )
    )
    .from(table1)
EN

回答 1

Stack Overflow用户

发布于 2020-08-24 15:55:54

可以将表达式转换为数字表达式以访问除法运算符:

代码语言:javascript
运行
复制
JPAExpressions.asNumber(
     JPAExpressions.select(table2.table2Seq.count())
                        .from(table2)
                        .where(table2.table2Seq.eq(table1.table1Seq)))
.divide(
    JPAExpressions.asNumber(JPAExpressions.select(table2.table2Seq.count())
                        .from(table2)
                        .where(table2.table2Seq.eq(table1.table1Seq)
                        .and(table2.table2Yn.eq(true))))
).as("count3")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63554873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档