묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
빌드오류가 계속 나옵니다
vs 도구를 추가로 설치하거나 generate를 계속해주거나일반 프로젝트를 생성하고 source랑 contents를 넣은 뒤 generate를 해줘도 동일합니다강의자료로 해도 깃헙에서 받아도 전부 그렇습니다
-
해결됨태블로 지도 시각화, 기초부터 고급까지
브이월드 지도
안녕하세요. 드디어 마지막 섹션을 듣고 있습니다.알려주신 네이버 블로그에서 브이월드 지도를 가져다 쓰려고 하는데요. 작성일이 2020년인데 현재는 2024년이니 지도에 변화가 있을텐데, 알려주신 지도는 최신화 반영되어 있나요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
자기자신을 추가해도 문제가 없는거같아 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.여기에서 public static void main(String[] args) { Scanner in = new Scanner(System.in); String input1 = in.nextLine(); Integer size = Integer.valueOf(input1); int[][] input2 = new int[Integer.valueOf(input1) ][Integer.valueOf(input1) ]; for (int i = 0; i < Integer.valueOf(input1); i++) { String[] temp = in.nextLine().split(" "); for (int j = 0; j < temp.length; j++) { input2[i ][j] = Integer.valueOf(temp[j]); } } int[] count = new int[size]; // 학생 번호 -> [V][] // 학년 -> [][V] // 자기자신 번호를 추가해도 문제X for (int i = 0; i < size; i++) { boolean[] matched = new boolean[size]; // 학년 for (int j = 0; j < size; j++) { int now = input2[i][j]; // 학생 for (int k = 0; k < size; k++) { int another = input2[k][j]; if (now == another){ matched[k] = true; } } } int matchedCount = 0; for (int j = 0; j < size; j++) { if (matched[j]){ matchedCount++; } } count[i] = matchedCount; } int max = 0; int maxStu = 0; for (int i = 0; i < size; i++) { if (count[i] > max){ maxStu = i; } } System.out.println(maxStu); }어차피 자기자신은 항상 포함되어 기본값이 1이게될텐데,boolean[] matched = new boolean[size]; 에서 체크하는걸로 처리하였습니다.이접근법이 틀린이유를 모르겠습니다.1. 자기자신을 같이처리 (기본카운트는 항상 1부터)2. 리스트에 매치된 학생들을 계산 후 마지막에 더함
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
@Transactional 적용되는 접근제어자 관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강의에서 @Transactional 애노테이션이 붙여있어도 public이 아니면 AOP가 적용이안된다고하고 V1 테스트의 internal에서 public을 지우고 했을때 적용이안된다고하셨는데 저는 public을 지워도 되더라고요 @Test void internalCall(){ callService.internal(); } @Transactional void internal(){ log.info("call internal"); printTxInfo(); } 결과화면 이유를 알고싶습니다.Dependencies관련 build.gradle 버전 plugins { id 'java' id 'org.springframework.boot' version '3.3.5' id 'io.spring.dependency-management' version '1.1.6' } group = 'hello' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(21) } } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' //테스트에서 lombok 사용 testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' } tasks.named('test') { useJUnitPlatform() }
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Actuator busrefresh 관련 질문
해결 했습니다. 강의 감사합니다
-
미해결[코드팩토리] [초급] 8시간만에 끝내는 코드팩토리의 Typescript 완전정복 풀코스
리플렉션과 데코레이터 사용시 의문점
안녕하세요리플렉션과 데코레이터를 공부하면서 잘 이해한건지 궁금합니다. const restrictParamValueKey = Symbol('restrict-param-value') interface RestrictionInfo<T> { index: number restrictValues: T[] } function RestrictParamValue<T>(restrictValues: T[]) { return (target: any, propertyKey: string, index: number) => { console.log(`${target} ${propertyKey}${index}`) const prevMeta = Reflect.getOwnMetadata(restrictParamValueKey, target, propertyKey) ?? [] const info: RestrictionInfo<T> = { index, restrictValues } Reflect.defineMetadata(restrictParamValueKey, [ ...prevMeta, info ], target, propertyKey) console.log(Reflect.getOwnMetadata(restrictParamValueKey, target, propertyKey)) } }메서드의 파라미터 데코레이터 사용시 Reflect.defineMetadata로 메타데이터를 정의하는데 3번째 파라미터로 target 4번째로는 propertyKey를 넣는 이유가 target는 클래스의 프로토타입 이며 propertyKey는 메서드가 target 클래스의 프로토타입의 메서드이기 때문일까요?추가로 메서드 데코레이터와 파라미터 데코레이터에서의 target, propertyKey는 동일한게 맞을까요?
-
해결됨김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
섹션12의 HTTP 서버1 - 시작에서 27분에 질문있습니다.
다른 브라우저를 사용해야 테스트가 확실히 된다고 하셨는데같은 브라우저일 때는 왜 테스트에 어려움이 있는걸까요?어차피 쓰레드 하나로 순차 동기 실행 아닐까요?궁금합니다!
-
미해결
[빠짝스터디 3주차 과제]리텐션 연습문제
리텐션 연습문제1. weekly retention을 구하는 쿼리를 바닥부터 스스로 작성해보기WITH event_log_base AS ( SELECT DISTINCT DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime, DATE(DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul')) AS event_date, DATE_TRUNC(DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul'), WEEK(MONDAY)) AS event_week, DATE_TRUNC(DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul'), MONTH) AS event_month, user_id, user_pseudo_id, event_name, platform, event_params FROM advanced.app_logs ), -- 사용자별 첫 방문 주차 계산 user_first_visit_base AS ( SELECT user_pseudo_id, MIN(event_week) OVER (PARTITION BY user_pseudo_id) AS first_visit_week, event_week AS current_week FROM event_log_base ), -- 사용자별 첫 방문 주차와 현재 주차 차이 계산 user_weekly_diff AS ( SELECT first_visit_week, DATE_DIFF(current_week, first_visit_week, WEEK) AS week_diff, COUNT(DISTINCT user_pseudo_id) AS weekly_active_users FROM user_first_visit_base GROUP BY first_visit_week, week_diff ) -- 유지율 계산 SELECT first_visit_week, week_diff, weekly_active_users, SAFE_DIVIDE(weekly_active_users, FIRST_VALUE(weekly_active_users) OVER (PARTITION BY first_visit_week ORDER BY week_diff ASC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)) AS retention_rate FROM user_weekly_diff; 리텐션 연습문제2. Retain user를 New + Current + Resurrected + Dormant user로 나누는 쿼리 작성군집별 분류기준1. 신규 사용자 (New User)는 시스템에 처음으로 등록되거나 서비스를 처음으로 사용한 이후 30일 이내에 활동한 사용자. 첫 방문 날짜(first_visit_date)와 마지막 방문 날짜(last_visit_date) 간의 차이가 30일 이하일 경우 ‘신규 사용자’로 분류2. 현재 사용자 (Current User)는 서비스에 처음 등록한 후 30일이 지난 사용자 중, 최근 30일 이내에도 서비스에 접속한 기록이 있는 사용자. 첫 방문 날짜와 마지막 방문 날짜의 차이가 30일을 초과하고, 가장 최근 이벤트 날짜(latest_event_date)로부터 30일 이내에 활동한 경우 ‘현재 사용자’로 분류3. 휴면 사용자 (Dormant User)는 한동안 서비스를 이용하지 않아서, 마지막 방문 이후 현재까지 30일 이상 비활동 상태에 있는 사용자. 사용자의 마지막 방문 날짜(last_visit_date)가 가장 최근 이벤트 날짜로부터 30일 이상 경과했을 경우 ‘휴면 사용자’로 분류4. 복귀 사용자 (Resurrected User)는 일정 기간(30일 이상) 동안 비활동 상태였으나, 다시 서비스를 사용하기 시작한 사용자. 사용자 활동 기록에서 비활성화 기간이 30일 이상 지속되었다가 다시 활동이 발생한 경우(이전 방문 이후 30일 동안 활동이 없다가 다시 방문 시), 해당 사용자를 ‘복귀 사용자’로 분류WITH event_data AS ( SELECT DISTINCT DATE(DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul')) AS event_date, user_pseudo_id FROM advanced.app_logs ), -- 사용자별 첫 방문 및 마지막 방문 날짜 계산 user_first_last_visit AS ( SELECT user_pseudo_id, MIN(event_date) AS first_visit_date, MAX(event_date) AS last_visit_date FROM event_data GROUP BY user_pseudo_id ), -- 앱 로그의 마지막 이벤트 날짜 계산 current_event_date AS ( SELECT MAX(event_date) AS latest_event_date FROM event_data ), -- 사용자의 이벤트 활동을 기준으로 휴면 여부 계산 user_activity_log AS ( SELECT user_pseudo_id, event_date, LEAD(event_date) OVER (PARTITION BY user_pseudo_id ORDER BY event_date) AS next_event_date, CASE WHEN DATE_DIFF(LEAD(event_date) OVER (PARTITION BY user_pseudo_id ORDER BY event_date), event_date, DAY) > 30 THEN 1 ELSE 0 END AS inactive_period FROM event_data ), -- 사용자 유형 분류: 신규, 현재, 휴면, 복귀 사용자 user_category AS ( SELECT u.user_pseudo_id, u.first_visit_date, u.last_visit_date, ced.latest_event_date, MAX(ual.inactive_period) AS inactive_period, CASE WHEN DATE_DIFF(ced.latest_event_date, u.last_visit_date, DAY) > 30 THEN 'dormant_user' WHEN DATE_DIFF(u.last_visit_date, u.first_visit_date, DAY) <= 30 THEN 'new_user' WHEN MAX(ual.inactive_period) = 1 THEN 'resurrected_user' ELSE 'current_user' END AS user_type FROM user_first_last_visit AS u CROSS JOIN current_event_date AS ced LEFT JOIN user_activity_log AS ual ON u.user_pseudo_id = ual.user_pseudo_id GROUP BY u.user_pseudo_id, u.first_visit_date, u.last_visit_date, ced.latest_event_date ), -- 주차별 사용자 유형과 첫 방문 주차와의 차이 계산 user_weekly_retention AS ( SELECT uc.user_type, ed.user_pseudo_id, ed.event_date, DATE_DIFF(DATE_TRUNC(ed.event_date, WEEK(MONDAY)), DATE_TRUNC(uc.first_visit_date, WEEK(MONDAY)), WEEK) AS week_difference FROM event_data AS ed JOIN user_category AS uc ON ed.user_pseudo_id = uc.user_pseudo_id ), -- 사용자 유형 및 주차별 사용자 수 계산 user_count_by_type_and_week AS ( SELECT user_type, week_difference, COUNT(DISTINCT user_pseudo_id) AS user_count FROM user_weekly_retention GROUP BY user_type, week_difference ), -- 유지율 계산 retention_calculation AS ( SELECT user_type, week_difference, user_count, FIRST_VALUE(user_count) OVER (PARTITION BY user_type ORDER BY week_difference) AS initial_user_count FROM user_count_by_type_and_week ) SELECT user_type, week_difference, ROUND(SAFE_DIVIDE(user_count, initial_user_count), 2) AS retention_rate FROM retention_calculation ORDER BY user_type, week_difference; 리텐션 연습문제3. 주어진 데이터에서 어떤 사람들이 리텐션이 그나마 높은지 찾아보기-- 1) 특정 월에 방문한 사용자들의 월별 리텐션 비교 -- 첫 접속일을 기준으로 리텐션이 높은 코호트를 분석하여, 리텐션 높은 사용자들이 특정 시기와 관련이 있는지 확인 WITH monthly_event_base AS ( SELECT user_pseudo_id, DATE_TRUNC(MIN(event_date) OVER (PARTITION BY user_pseudo_id), MONTH) AS first_event_month, DATE_TRUNC(event_date, MONTH) AS current_month, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime FROM advanced.app_logs ), -- 첫 방문 월 대비 차이 계산 monthly_diff_data AS ( SELECT user_pseudo_id, first_event_month, current_month, DATE_DIFF(current_month, first_event_month, MONTH) AS month_diff FROM monthly_event_base ORDER BY month_diff ), -- 월별 사용자 수 계산 monthly_user_count AS ( SELECT first_event_month, month_diff, COUNT(DISTINCT user_pseudo_id) AS user_count FROM monthly_diff_data GROUP BY first_event_month, month_diff ORDER BY month_diff ) -- 리텐션 비율 계산 SELECT *, ROUND(SAFE_DIVIDE(user_count, initial_user_count), 2) AS retention_rate FROM ( SELECT *, FIRST_VALUE(user_count) OVER (PARTITION BY first_event_month ORDER BY month_diff) AS initial_user_count FROM monthly_user_count ) ORDER BY first_event_month, month_diff; -- 2) 특정 이벤트가 높은 리텐션과 관련이 있는가 -- 사용자별 주요 이벤트의 단계와 횟수를 파악하여 리텐션 높은 사용자들이 특정 행동 패턴을 보이는지 확인 WITH event_base AS ( SELECT user_pseudo_id, DATE_TRUNC(MIN(event_date) OVER (PARTITION BY user_pseudo_id), WEEK(MONDAY)) AS first_week, DATE_TRUNC(MIN(event_date) OVER (PARTITION BY user_pseudo_id), MONTH) AS first_month, event_name, param FROM advanced.app_logs CROSS JOIN UNNEST(event_params) AS param ), -- 이벤트별 단계 및 세션 정보 추출 event_stage AS ( SELECT user_pseudo_id, first_week, first_month, event_name, MAX(IF(param.key = "firebase_screen", param.value.string_value, NULL)) AS firebase_screen, MAX(IF(param.key = "food_id", param.value.string_value, NULL)) AS food_id, MAX(IF(param.key = "session_id", param.value.string_value, NULL)) AS session_id FROM event_base GROUP BY user_pseudo_id, first_week, first_month, event_name ORDER BY user_pseudo_id ), -- 퍼널 단계별 사용자 수 계산 funnel_stage_count AS ( SELECT first_month, CASE WHEN event_name = "screen_view" THEN 1 WHEN event_name = "click_login" THEN 2 WHEN event_name = "click_search" THEN 3 WHEN event_name = "request_search" THEN 4 WHEN event_name = "click_restaurant" THEN 5 WHEN event_name = "click_food_category" THEN 6 WHEN event_name = "view_recommend_extra_food" THEN 7 WHEN event_name = "click_cart" THEN 8 WHEN event_name = "click_payment" THEN 9 WHEN event_name = "click_banner" THEN 10 END AS step_number, event_name, COUNT(DISTINCT user_pseudo_id) AS count FROM event_stage GROUP BY first_month, event_name HAVING step_number IS NOT NULL ORDER BY first_month, step_number ) -- 단계별 퍼널 비율 계산 SELECT *, ROUND(SAFE_DIVIDE(count, previous_step_count), 2) AS funnel_ratio FROM ( SELECT *, LAG(count) OVER (PARTITION BY first_month ORDER BY step_number) AS previous_step_count FROM funnel_stage_count ) ORDER BY first_month, step_number; 첫째, 10월과 11월에 첫 방문한 사용자가 다른 월에 비해 리텐션이 높게 나타났으며, click_food_category 이벤트를 거친 사용자의 리텐션이 높았다.리텐션 연습문제4. core event를 "click_payment"라고 설정하고 weekly retention 구하기 WITH user_payment_data AS ( SELECT user_pseudo_id, event_date, DATE_TRUNC(MIN(event_date) OVER (PARTITION BY user_pseudo_id), WEEK(MONDAY)) AS first_event_week, DATE_TRUNC(event_date, WEEK(MONDAY)) AS current_event_week, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime FROM advanced.app_logs WHERE event_name = 'click_payment' ), -- 첫 이벤트 주차 대비 현재 주차 차이 계산 weekly_difference_data AS ( SELECT user_pseudo_id, first_event_week, current_event_week, DATE_DIFF(current_event_week, first_event_week, WEEK) AS weeks_since_first_event FROM user_payment_data ORDER BY weeks_since_first_event ), -- 주차별 사용자 수 집계 weekly_user_counts AS ( SELECT first_event_week, weeks_since_first_event, COUNT(DISTINCT user_pseudo_id) AS user_count FROM weekly_difference_data GROUP BY first_event_week, weeks_since_first_event ORDER BY weeks_since_first_event ) -- 주차별 리텐션 비율 계산 SELECT *, ROUND(SAFE_DIVIDE(user_count, initial_user_count), 2) AS retention_rate FROM ( SELECT *, FIRST_VALUE(user_count) OVER (PARTITION BY first_event_week ORDER BY weeks_since_first_event) AS initial_user_count FROM weekly_user_counts ) ORDER BY first_event_week, weeks_since_first_event;
-
미해결
[빠짝스터디 3주차 과제] 1~3번 문제
1번 문제. 주차별 각 카테고리별 평균 할인율이 가장 높았던 기간과 할인율을 구하는 쿼리 작성WITH transaction_data AS ( SELECT 111 AS user_id, 1001 AS item_id, 719200 AS actual_price, '01/08/2024 12:00:00' AS transaction_date UNION ALL SELECT 111, 2002, 89000, '01/10/2024 12:00:00' UNION ALL SELECT 189, 2002, 89000, '01/12/2024 12:00:00' UNION ALL SELECT 156, 3002, 459000, '01/15/2024 12:00:00' UNION ALL SELECT 121, 1001, 719200, '01/18/2024 12:00:00' UNION ALL SELECT 156, 2001, 90300, '01/25/2024 12:00:00' UNION ALL SELECT 145, 3001, 399000, '01/26/2024 12:00:00' UNION ALL SELECT 189, 1002, 607200, '01/28/2024 12:00:00' UNION ALL SELECT 111, 3001, 399000, '02/05/2024 12:00:00' UNION ALL SELECT 178, 1002, 759000, '02/07/2024 12:00:00' UNION ALL SELECT 121, 2002, 62300, '02/08/2024 12:00:00' UNION ALL SELECT 156, 1001, 899000, '02/10/2024 12:00:00' UNION ALL SELECT 190, 2001, 90300, '02/11/2024 12:00:00' UNION ALL SELECT 189, 2001, 90300, '02/14/2024 12:00:00' UNION ALL SELECT 111, 1002, 759000, '02/15/2024 12:00:00' UNION ALL SELECT 156, 3001, 299250, '02/20/2024 12:00:00' UNION ALL SELECT 189, 3002, 344250, '02/25/2024 12:00:00' UNION ALL SELECT 111, 2001, 90300, '02/28/2024 12:00:00' ), user_info AS ( SELECT 111 AS user_id, 'Seoul' AS city, 28 AS age, 'Female' AS gender UNION ALL SELECT 121, 'Busan', 35, 'Male' UNION ALL SELECT 145, 'Incheon', 42, 'Female' UNION ALL SELECT 156, 'Seoul', 31, 'Male' UNION ALL SELECT 178, 'Daegu', 25, 'Female' UNION ALL SELECT 189, 'Seoul', 39, 'Male' UNION ALL SELECT 190, 'Busan', 29, 'Female' ), item_info AS ( SELECT 1001 AS item_id, 'Electronics' AS category, 'Smartphone' AS item_name, 899000 AS list_price UNION ALL SELECT 1002 AS item_id, 'Electronics' AS category, 'Tablet' AS item_name, 759000 AS list_price UNION ALL SELECT 2001 AS item_id, 'Fashion' AS category, 'Sneakers' AS item_name, 129000 AS list_price UNION ALL SELECT 2002 AS item_id, 'Fashion' AS category, 'Backpack' AS item_name, 89000 AS list_price UNION ALL SELECT 3001 AS item_id, 'Home' AS category, 'Coffee Machine' AS item_name, 399000 AS list_price UNION ALL SELECT 3002 AS item_id, 'Home' AS category, 'Air Purifier' AS item_name, 459000 AS list_price ), -- 거래 데이터에 datetime 형식 적용 transaction_base AS ( SELECT user_id, item_id, actual_price, PARSE_DATETIME('%m/%d/%Y %H:%M:%S', transaction_date) AS transaction_datetime FROM transaction_data ), -- 할인율 계산 및 주별 그룹화 discount_data AS ( SELECT transaction_base.user_id, transaction_base.item_id, 100 - (transaction_base.actual_price / item_info.list_price) * 100 AS discount_ratio, transaction_base.transaction_datetime, item_info.category, DATE_TRUNC(transaction_base.transaction_datetime, WEEK) AS transaction_week FROM transaction_base LEFT JOIN item_info ON transaction_base.item_id = item_info.item_id ), -- 카테고리별 주차 평균 할인율 계산 weekly_discount_avg AS ( SELECT FORMAT_TIMESTAMP('%Y-%m-%d %H:%M:%S', transaction_week) AS transaction_week, category, AVG(discount_ratio) AS avg_discount_ratio FROM discount_data GROUP BY transaction_week, category ), -- 카테고리별 최고 평균 할인율 주차 및 할인율 찾기 category_discount_rank AS ( SELECT transaction_week, category, avg_discount_ratio, RANK() OVER(PARTITION BY category ORDER BY avg_discount_ratio DESC) AS rank FROM weekly_discount_avg ) -- 최종 결과 출력 SELECT transaction_week, category, avg_discount_ratio AS highest_avg_discount_ratio FROM category_discount_rank WHERE rank = 1 ORDER BY category; 2번 문제. 2024년 1월에 가장 많은 매출을 기록한 카테고리를 구하는 쿼리 작성WITH transaction_data AS ( SELECT 111 AS user_id, 1001 AS item_id, 719200 AS actual_price, '01/08/2024 12:00:00' AS transaction_date UNION ALL SELECT 111, 2002, 89000, '01/10/2024 12:00:00' UNION ALL SELECT 189, 2002, 89000, '01/12/2024 12:00:00' UNION ALL SELECT 156, 3002, 459000, '01/15/2024 12:00:00' UNION ALL SELECT 121, 1001, 719200, '01/18/2024 12:00:00' UNION ALL SELECT 156, 2001, 90300, '01/25/2024 12:00:00' UNION ALL SELECT 145, 3001, 399000, '01/26/2024 12:00:00' UNION ALL SELECT 189, 1002, 607200, '01/28/2024 12:00:00' UNION ALL SELECT 111, 3001, 399000, '02/05/2024 12:00:00' UNION ALL SELECT 178, 1002, 759000, '02/07/2024 12:00:00' UNION ALL SELECT 121, 2002, 62300, '02/08/2024 12:00:00' UNION ALL SELECT 156, 1001, 899000, '02/10/2024 12:00:00' UNION ALL SELECT 190, 2001, 90300, '02/11/2024 12:00:00' UNION ALL SELECT 189, 2001, 90300, '02/14/2024 12:00:00' UNION ALL SELECT 111, 1002, 759000, '02/15/2024 12:00:00' UNION ALL SELECT 156, 3001, 299250, '02/20/2024 12:00:00' UNION ALL SELECT 189, 3002, 344250, '02/25/2024 12:00:00' UNION ALL SELECT 111, 2001, 90300, '02/28/2024 12:00:00' ), user_info AS ( SELECT 111 AS user_id, 'Seoul' AS city, 28 AS age, 'Female' AS gender UNION ALL SELECT 121, 'Busan', 35, 'Male' UNION ALL SELECT 145, 'Incheon', 42, 'Female' UNION ALL SELECT 156, 'Seoul', 31, 'Male' UNION ALL SELECT 178, 'Daegu', 25, 'Female' UNION ALL SELECT 189, 'Seoul', 39, 'Male' UNION ALL SELECT 190, 'Busan', 29, 'Female' ), item_info AS ( SELECT 1001 AS item_id, 'Electronics' AS category, 'Smartphone' AS item_name, 899000 AS list_price UNION ALL SELECT 1002 AS item_id, 'Electronics' AS category, 'Tablet' AS item_name, 759000 AS list_price UNION ALL SELECT 2001 AS item_id, 'Fashion' AS category, 'Sneakers' AS item_name, 129000 AS list_price UNION ALL SELECT 2002 AS item_id, 'Fashion' AS category, 'Backpack' AS item_name, 89000 AS list_price UNION ALL SELECT 3001 AS item_id, 'Home' AS category, 'Coffee Machine' AS item_name, 399000 AS list_price UNION ALL SELECT 3002 AS item_id, 'Home' AS category, 'Air Purifier' AS item_name, 459000 AS list_price ), -- 1월 데이터 필터링 및 카테고리별 매출 합계 계산 january_sales_data AS ( SELECT trans.actual_price, item.category FROM transaction_data AS trans LEFT JOIN item_info AS item ON trans.item_id = item.item_id WHERE trans.transaction_date >= '01/01/2024' AND trans.transaction_date < '02/01/2024' ) -- 카테고리별 매출 합계 계산 및 순위 설정 SELECT category, total_sales FROM ( SELECT category, SUM(actual_price) AS total_sales, RANK() OVER(ORDER BY SUM(actual_price) DESC) AS sales_rank FROM january_sales_data GROUP BY category ) AS ranked_sales WHERE sales_rank = 1; 3번 문제. 유저별 총 구매 금액이 200만원 이상인 유저들이 가장 많이 구매한 카테고리를 찾는 쿼리 작성WITH transaction_data AS ( SELECT 111 AS user_id, 1001 AS item_id, 719200 AS actual_price, '01/08/2024 12:00:00' AS transaction_date UNION ALL SELECT 111, 2002, 89000, '01/10/2024 12:00:00' UNION ALL SELECT 189, 2002, 89000, '01/12/2024 12:00:00' UNION ALL SELECT 156, 3002, 459000, '01/15/2024 12:00:00' UNION ALL SELECT 121, 1001, 719200, '01/18/2024 12:00:00' UNION ALL SELECT 156, 2001, 90300, '01/25/2024 12:00:00' UNION ALL SELECT 145, 3001, 399000, '01/26/2024 12:00:00' UNION ALL SELECT 189, 1002, 607200, '01/28/2024 12:00:00' UNION ALL SELECT 111, 3001, 399000, '02/05/2024 12:00:00' UNION ALL SELECT 178, 1002, 759000, '02/07/2024 12:00:00' UNION ALL SELECT 121, 2002, 62300, '02/08/2024 12:00:00' UNION ALL SELECT 156, 1001, 899000, '02/10/2024 12:00:00' UNION ALL SELECT 190, 2001, 90300, '02/11/2024 12:00:00' UNION ALL SELECT 189, 2001, 90300, '02/14/2024 12:00:00' UNION ALL SELECT 111, 1002, 759000, '02/15/2024 12:00:00' UNION ALL SELECT 156, 3001, 299250, '02/20/2024 12:00:00' UNION ALL SELECT 189, 3002, 344250, '02/25/2024 12:00:00' UNION ALL SELECT 111, 2001, 90300, '02/28/2024 12:00:00' ), user_info AS ( SELECT 111 AS user_id, 'Seoul' AS city, 28 AS age, 'Female' AS gender UNION ALL SELECT 121, 'Busan', 35, 'Male' UNION ALL SELECT 145, 'Incheon', 42, 'Female' UNION ALL SELECT 156, 'Seoul', 31, 'Male' UNION ALL SELECT 178, 'Daegu', 25, 'Female' UNION ALL SELECT 189, 'Seoul', 39, 'Male' UNION ALL SELECT 190, 'Busan', 29, 'Female' ), item_info AS ( SELECT 1001 AS item_id, 'Electronics' AS category, 'Smartphone' AS item_name, 899000 AS list_price UNION ALL SELECT 1002 AS item_id, 'Electronics' AS category, 'Tablet' AS item_name, 759000 AS list_price UNION ALL SELECT 2001 AS item_id, 'Fashion' AS category, 'Sneakers' AS item_name, 129000 AS list_price UNION ALL SELECT 2002 AS item_id, 'Fashion' AS category, 'Backpack' AS item_name, 89000 AS list_price UNION ALL SELECT 3001 AS item_id, 'Home' AS category, 'Coffee Machine' AS item_name, 399000 AS list_price UNION ALL SELECT 3002 AS item_id, 'Home' AS category, 'Air Purifier' AS item_name, 459000 AS list_price ), -- 사용자별 총 구매 금액 계산 및 200만원 이상 필터링 user_total_purchase AS ( SELECT user_id, SUM(actual_price) AS total_purchase_amount FROM transaction_data GROUP BY user_id HAVING total_purchase_amount >= 2000000 ), -- 필터링된 유저의 카테고리별 구매 금액 합계와 순위 계산 category_sales_rank AS ( SELECT item_info.category AS category, SUM(transaction_data.actual_price) AS total_category_sales, RANK() OVER(ORDER BY SUM(transaction_data.actual_price) DESC) AS sales_rank FROM transaction_data LEFT JOIN item_info ON transaction_data.item_id = item_info.item_id WHERE transaction_data.user_id IN ( SELECT user_id FROM user_total_purchase ) GROUP BY category ) -- 결과 출력 SELECT category, total_category_sales FROM category_sales_rank WHERE sales_rank = 1;
-
미해결Java TPC 실전프로젝트 (Java API 활용)
cmd창.. 인텔리제이 소켓만들기 (실습)
소켓 실습하고 있는데cmd창에서 src까지 들어갔는데자꾸 클래스를 찾을 수 없다 합니다..ㅠ구글링도 해보았으나 뭐가 문제일까요... ㅠ
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
옵티마이저와 경사하강법의 차이가 궁금합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 강의 내용을 질문할 경우 몇분 몇초의 내용에 대한 것인지 반드시 기재 부탁드립니다. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 어느정도 찾아본 결과 옵티마이저는 최적의 파라미터를 찾아주는 알고리즘을 뜻한다고 합니다.그런데 제가 듣기로는 경사하강법도 비슷한 개념인 것 같습니다.그렇다면 옵티마이저 안에 경사하강법과 monentum, adagrad 등등 다 포함되는 건가요?
-
미해결스프링 핵심 원리 - 기본편
Section8_조회한 빈이 모두 필요할 때, List, Map 질문
오타도 없고 강의 코드와 똑같이 실행했는데 discountPolicy에 NULL값이 할당이 되어있습니다.policyMap에 rateDiscountPolicy, fixDiscountPolicy이 둘다 담겨져있는데 nullpointerexception이 발생하는 이유를 모르겠습니다.public int discount(Member member, int price, String discountCode) { DiscountPolicy discountPolicy = policyMap.get(discountCode); return discountPolicy.discount(member, price); }
-
미해결BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
[빠짝스터디] 3주차 리텐션 과제
노션 링크로 업로드 합니다!https://qkffpsxkdlwm.notion.site/3-13a35e3a8bef8019b7a6d9c6abc72193?pvs=4
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-M 시간초과
제가 처음 코드를 작성했을 때이렇게 작성했는데 시간초과가 났습니다. 여기서 처음 cnt를 1로 설정하고 N이 됐을때 break를 걸었습니다. 근데 여기서 선생님이 했던 방식으로 cnt를 N으로 설정하고 0이 될때 멈추니 시간초과가 안났습니다. 이게 바꾼 코드입니다. 왜 +/- 가 시간차이가 나는건가요? 동일한 방식인데 이해가 안갑니다.
-
미해결
공부 방향성 관련 질문
안녕하세요 강사님 좋은 강의 제공해신 점 감사합니다.23회차 실기 시험을 준비중인데,,지금까지 IT관련 자격증들을 모두 수험서만 가지고 공부를 하였는데(인강이 저랑 잘 안맞더라구요)디포2급은 실습이 필요한 자격증이다 보니 인강이 필수적인것처럼 느껴지더라구요.혹시 처음에 제공되는 교재를 보고 실습하는 식으로 공부해도크게 문제가 없을지 궁금하여 질문드립니다.교재를 보고 진행하는데 크게 이해되지 않는 부분은 없고,모르는 개념들은 용어 설명쪽을 보면서 다시 복기하는 개념들도 있고 새로 알아가는 개념들도 있어많은 도움들이 되고있습니다. 시험일까지 얼마 남지 않아 교재만 보고해도 놓치는 중요 포인트들이 없을지 궁금하여 연락드립니다^^
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
split 메서드에서 "|" 문자를 인식하지 못하는 문제
이유는 모르겠습니다만 제 컴퓨터에서는 DELIMITER 로 지정한 문자 "|" 가 split 메서드에서 작동하지 않더라구요. window를 사용하는데 그 때문인지는 모르겠습니다. 그래서 저는 DELIMITER = "\\|" 로 지정해 동작시켰습니다. 강사님과 split 메서드가 다르게 작동하는 이유는 뭘까요?
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
vercel 배포
배포는 잘 된 것 같은데요...? 계속 데이터 로딩중 페이지만 떠서 여쭤봅니다. 제 생각에는 받아올 데이터가 없어서 빈배열이라서 문제가 되는걸까 싶었지만, 선생님 강의에서도 동일하게 빈배열이지만 Header가 잘 나오는거보면 랜더링이 정상적으로 되는 것 같아서 받아올 데이터가 없는건 문제가 아닌듯하여 질문하게되었습니다. 혹시나 권한 오류일까 싶어 질문답변 글 참고하여 적용해봤으나 아닌 것 같습니다.
-
미해결BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
[빠짝스터디 3주차 과제] 리텐션 분석
노션에서 작성했습니다! https://salt-baron-5c5.notion.site/3-13aa734e64b880a1a9a1e84a92fa3593
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
마지막 문제 질문 있습니다.
//if (knight != nullptr)//{// if (knight->IsDead())// {// delete knight;// knight = nullptr;// // 내 풀이// break;// }//} 저는 삭제가 된 메모리를 계속 건드리것으로 파악하고 break;문으로 for문을 빠져나오는 식으로 수정했는데 문제가 있는 해답인지 아닌지 궁금합니다.
-
미해결[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
기출8회 작업형2 원핫인코딩으로 하면 자꾸 오류가 나요 ㅠ
어디가 문제일까요? ㅠㅠ 라벨인코딩이 너무 어렵게 느껴져서 원핫인코딩만 외웠는데 적용이 힘드네요 도와주세요~~