|
1 | 1 | package com.dduckddak.domain.data.sales.repository; |
2 | 2 |
|
| 3 | +import com.dduckddak.domain.data.sales.dto.SalesRateByAgeAndIndustryResponse; |
| 4 | +import com.dduckddak.domain.data.sales.dto.SalesRateByGenderAndIndustryResponse; |
3 | 5 | import com.dduckddak.domain.data.sales.model.Sales; |
4 | 6 | import com.dduckddak.domain.town.dto.SalesVO; |
5 | 7 | import com.dduckddak.domain.town.model.TownIndustry; |
@@ -35,4 +37,52 @@ SalesVO getSalesCompare(@Param("code") String code, |
35 | 37 |
|
36 | 38 |
|
37 | 39 |
|
| 40 | + |
| 41 | + |
| 42 | + @Query(value = |
| 43 | + "SELECT \n" + |
| 44 | + "\tt.name AS townName, \n" + |
| 45 | + " i.name as industryName,\n" + |
| 46 | + " ROUND(s.men_sales / (s.men_sales + s.women_sales) * 100, 1) AS menPercentage,\n" + |
| 47 | + " ROUND(s.women_sales / (s.men_sales + s.women_sales) * 100, 1) AS womenPercentage,\n" + |
| 48 | + " s.men_sales + s.women_sales as salesOfIndustry\n" + |
| 49 | + "FROM \n" + |
| 50 | + "\ttown_industry ti\n" + |
| 51 | + "INNER JOIN \n" + |
| 52 | + "\ttown t ON ti.town_id = t.id\n" + |
| 53 | + "INNER JOIN \n" + |
| 54 | + "\tindustry i ON ti.industry_id = i.id\n" + |
| 55 | + "INNER JOIN \n" + |
| 56 | + "\tsales s ON ti.id = s.town_industry_id\n" + |
| 57 | + "WHERE \n" + |
| 58 | + "\tt.quarter in (20241) AND t.code = :townCode AND i.name = :industryName", |
| 59 | + nativeQuery = true) |
| 60 | + SalesRateByGenderAndIndustryResponse findSalesRateByGenderAndIndustry(@Param("townCode") String townCode, @Param("industryName") String industryName); |
| 61 | + |
| 62 | + |
| 63 | + @Query(value = |
| 64 | + "SELECT \n" + |
| 65 | + "\tt.name AS townName, \n" + |
| 66 | + " i.name as industryName,\n" + |
| 67 | + " age10s_sales + age20s_sales + age30s_sales + age40s_sales + age50s_sales + age60s_and_more_sales AS totalSales,\n" + |
| 68 | + "\tROUND(age10s_sales / (age10s_sales + age20s_sales + age30s_sales + age40s_sales + age50s_sales + age60s_and_more_sales) * 100, 1) AS age10sSales,\n" + |
| 69 | + "\tROUND(age20s_sales / (age10s_sales + age20s_sales + age30s_sales + age40s_sales + age50s_sales + age60s_and_more_sales) * 100, 1) AS age20sSales,\n" + |
| 70 | + "\tROUND(age30s_sales / (age10s_sales + age20s_sales + age30s_sales + age40s_sales + age50s_sales + age60s_and_more_sales) * 100, 1) AS age30sSales,\n" + |
| 71 | + "\tROUND(age40s_sales / (age10s_sales + age20s_sales + age30s_sales + age40s_sales + age50s_sales + age60s_and_more_sales) * 100, 1) AS age40sSales,\n" + |
| 72 | + "\tROUND(age50s_sales / (age10s_sales + age20s_sales + age30s_sales + age40s_sales + age50s_sales + age60s_and_more_sales) * 100, 1) AS age50sSales,\n" + |
| 73 | + "\tROUND(age60s_and_more_sales / (age10s_sales + age20s_sales + age30s_sales + age40s_sales + age50s_sales + age60s_and_more_sales) * 100, 1) AS age60sAndMoreSales,\n" + |
| 74 | + " ROUND(s.men_sales / (s.men_sales + s.women_sales) * 100, 1) AS menPercentage,\n" + |
| 75 | + " ROUND(s.women_sales / (s.men_sales + s.women_sales) * 100, 1) AS womenPercentage\n" + |
| 76 | + "FROM \n" + |
| 77 | + "\ttown_industry ti\n" + |
| 78 | + "INNER JOIN \n" + |
| 79 | + "\ttown t ON ti.town_id = t.id\n" + |
| 80 | + "INNER JOIN \n" + |
| 81 | + "\tindustry i ON ti.industry_id = i.id\n" + |
| 82 | + "INNER JOIN \n" + |
| 83 | + "\tsales s ON ti.id = s.town_industry_id\n" + |
| 84 | + "WHERE \n" + |
| 85 | + "\tt.quarter in (20241) AND t.code = :townCode AND i.name = :industryName ", |
| 86 | + nativeQuery = true) |
| 87 | + SalesRateByAgeAndIndustryResponse findSalesRateByAgeAndIndustry(@Param("townCode") String townCode, @Param("industryName") String industryName); |
38 | 88 | } |
0 commit comments