๐Ÿ๏ธ Spring/QueryDsl

[QueryDSL] ์ง‘๊ณ„ ํ•จ์ˆ˜(count, sum, avg, max, min)

๋ง ๋ž‘ 2021. 12. 23. 18:29
728x90

 

 

 

์ง‘๊ณ„ (count, sum, avg, max, min)

์ง‘๊ณ„ ํ•จ์ˆ˜๋Š” ๊ทธ๋ฃน ๋ณ„๋กœ ๊ทธ๋ฃนํ•‘๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • COUNT() : ์ด ๊ฐœ์ˆ˜
  • SUM() : ํ•ฉ
  • AVG() : ํ‰๊ท 
  • MAX() : ์ตœ๋Œ€๊ฐ’
  • MIN() : ์ตœ์†Œ๊ฐ’

 

 

 

 

 

 

 

 

 

 

์‚ฌ์šฉ ์˜ˆ์‹œ

 

์…‹์—… ์ฝ”๋“œ

@BeforeEach
fun before() {
    val teamA = Team(name = "teamA")
    val teamB = Team(name = "teamB")
    em.persist(teamA)
    em.persist(teamB)

    val members = listOf(
        Member(username = "member1", age = 10, team = teamA),
        Member(username = "member2", age = 20, team = teamA),
        Member(username = "member3", age = 30, team = teamB),
        Member(username = "member4", age = 40, team = teamB),
        Member(username = "member5", age = 50, team = teamA),
        Member(username = "member6", age = 60, team = teamA),
        Member(username = "member7", age = 70, team = teamB),
        Member(username = "member8", age = 80, team = teamB),
        Member(username = "member9", age = 90, team = teamA),
        Member(username = "member10", age = 100, team = teamA),
        Member(username = "member11", age = 110, team = teamB),
        Member(username = "member12", age = 120, team = teamB),
    )
    members.forEach { em.persist(it) }
    em.flush()
    em.clear()
}

 

 

 

์‚ฌ์šฉ

@Test
fun testGroup() {
    val result = query
        .select(
            member.count(), // member๋Š” QMember.member
            member.age.sum(),
            member.age.avg(),
            member.age.max(),
            member.age.min(),
        )
        .from(member)
        .fetchOne()

    result!!
    assertThat(result.get(member.count())).isEqualTo(12)
    assertThat(result.get(member.age.sum())).isEqualTo(780)
    assertThat(result.get(member.age.avg())).isEqualTo(65.0)
    assertThat(result.get(member.age.max())).isEqualTo(120)
    assertThat(result.get(member.age.min())).isEqualTo(10)
}

 

 

Select ์ ˆ์— ์œ„์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ํƒ€์ž…์„ ์กฐํšŒํ•˜๋Š” ๊ฒฝ์šฐ QueryDsl์—์„œ ์ œ๊ณตํ•˜๋Š” Tuple๋กœ ์กฐํšŒ๋ฉ๋‹ˆ๋‹ค.

ํ•˜๋‚˜๋งŒ ์กฐํšŒ ์‹œ์—๋Š”, List<Integer>์™€ ๊ฐ™์ด ์กฐํšŒํ•œ ํƒ€์ž…์˜ List๋กœ ์กฐํšŒ๋ฉ๋‹ˆ๋‹ค.

 

 

Tuple์€  get()๋ฉ”์„œ๋“œ์˜ ์ธ์ž๋กœ SELECT ์ ˆ์—์„œ ์ˆ˜ํ–‰ํ–ˆ๋˜ Expression์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•ด์„œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

Reference

 

์‹ค์ „! Querydsl - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

Querydsl์˜ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์‹ค๋ฌด ํ™œ์šฉ๊นŒ์ง€, ํ•œ๋ฒˆ์— ํ•ด๊ฒฐํ•ด๋ณด์„ธ์š”!, ๋ณต์žกํ•œ ์ฟผ๋ฆฌ, ๋™์  ์ฟผ๋ฆฌ๋Š” ์ด์ œ ์•ˆ๋…•! Querydsl๋กœ ์ž๋ฐ” ๋ฐฑ์—”๋“œ ๊ธฐ์ˆ ์„ ๋‹จ๋‹จํ•˜๊ฒŒ. ๐Ÿšฉ ๋ณธ ๊ฐ•์˜๋Š” ๋กœ๋“œ๋งต ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ๋ณธ ๊ฐ•์˜๋Š” ์ž๋ฐ” ๋ฐฑ์—”

www.inflearn.com

 

 

 

 

 

 

728x90