728x90
데일리루틴 SQL
MySQL 조건에 맞는 사용자와 총 거래금액 조회하기 정답입니다.
SELECT B.WRITER_ID USER_ID, U.NICKNAME, SUM(B.PRICE) TOTAL_SALES
FROM USED_GOODS_BOARD B
JOIN USED_GOODS_USER U ON U.USER_ID = B.WRITER_ID
WHERE B.STATUS = 'DONE'
GROUP BY B.WRITER_ID, U.NICKNAME
HAVING SUM(B.PRICE) >= 700000
ORDER BY TOTAL_SALES
- SELECT B.WRITER_ID USER_ID, U.NICKNAME, SUM(B.PRICE) TOTAL_SALES
- 게시글 작성자 ID(WRITER_ID)를 USER_ID라는 별칭으로 선택합니다.
- 사용자 닉네임(NICKNAME)을 선택합니다.
- 작성자가 판매한 상품 가격(PRICE)의 총합을 TOTAL_SALES라는 별칭으로 선택합니다.
- FROM USED_GOODS_BOARD B
- 중고 상품 게시판 데이터 테이블(USED_GOODS_BOARD)을 조회합니다.
- 이 테이블은 B라는 별칭으로 사용됩니다.
- JOIN USED_GOODS_USER U ON U.USER_ID = B.WRITER_ID
- 사용자 정보 테이블(USED_GOODS_USER)을 게시판 테이블과 조인합니다.
- 게시글 작성자 ID(B.WRITER_ID)와 사용자 ID(U.USER_ID)가 일치하는 데이터를 연결합니다.
- WHERE B.STATUS = 'DONE'
- 판매 상태(STATUS)가 'DONE'(판매 완료)인 게시글만 필터링합니다.
- GROUP BY B.WRITER_ID, U.NICKNAME
- 작성자 ID(B.WRITER_ID)와 닉네임(U.NICKNAME)을 기준으로 그룹화합니다.
- 사용자별로 총 판매 금액을 계산할 수 있도록 그룹을 만듭니다.
- HAVING SUM(B.PRICE) >= 700000
- 그룹화된 데이터 중에서 총 판매 금액(SUM(B.PRICE))이 700,000원 이상인 데이터만 선택합니다.
- ORDER BY TOTAL_SALES
- 총 판매 금액(TOTAL_SALES)을 기준으로 결과를 정렬합니다.
- 기본적으로 오름차순(낮은 금액부터 높은 금액 순)으로 정렬됩니다.
데일리루틴 알고리즘
Java 크기가 작은 부분문자열 정답입니다.
class Solution {
public int solution(String t, String p) {
int answer = 0;
int pLength = p.length();
long pValue = Long.parseLong(p);
for (int i = 0; i <= t.length() - pLength; i++) {
String substring = t.substring(i, i + pLength);
long substringValue = Long.parseLong(substring);
if (substringValue <= pValue) {
answer++;
}
}
return answer;
}
}
- 클래스 및 메서드 정의
- class Solution : Solution이라는 클래스 정의.
- public int solution(String t, String p) : 문자열 t와 p를 입력으로 받는 메서드 solution을 정의. 결과값으로 정수(int)를 반환.
- 변수 초기화
- int answer = 0; : 조건을 만족하는 경우의 수를 저장하기 위한 변수 answer를 0으로 초기화.
- 문자열 p의 길이 저장
- int pLength = p.length(); : 문자열 p의 길이를 변수 pLength에 저장. 이후 반복문에서 사용할 예정.
- 문자열 p를 숫자로 변환
- long pValue = Long.parseLong(p); : 문자열 p를 숫자로 변환해 long 타입 변수 pValue에 저장. 문자열 비교 대신 숫자 비교를 위해 사용.
- 반복문을 통한 서브스트링 비교
- for (int i = 0; i <= t.length() - pLength; i++) : 문자열 t에서 p와 같은 길이의 부분 문자열을 찾기 위해 반복문을 실행. i는 부분 문자열의 시작 인덱스를 의미.
- 서브스트링 추출
- String substring = t.substring(i, i + pLength); : 문자열 t에서 i번째 인덱스부터 i + pLength까지의 부분 문자열을 추출하여 substring에 저장. 이 부분 문자열의 길이는 p의 길이와 동일.
- 서브스트링을 숫자로 변환
- long substringValue = Long.parseLong(substring); : 추출한 부분 문자열을 숫자로 변환하여 long 타입 변수 substringValue에 저장.
- 조건을 만족하는지 확인
- if (substringValue <= pValue) : substringValue가 pValue보다 작거나 같은지 확인.
- answer++ : 조건을 만족하면 answer 값을 1 증가.
- 결과 반환
- return answer; : 모든 반복이 끝난 후 조건을 만족하는 부분 문자열의 개수를 반환.
728x90
반응형
LIST
'Sparta > 데일리루틴' 카테고리의 다른 글
TIL(Today I Learned)_데일리루틴_24.11.20.Wed (0) | 2024.11.20 |
---|---|
TIL(Today I Learned)_데일리루틴_24.11.19.Tue (0) | 2024.11.19 |
TIL(Today I Learned)_데일리루틴_24.11.17.Sun (0) | 2024.11.17 |
TIL(Today I Learned)_데일리루틴_24.11.16.Sat (0) | 2024.11.16 |
TIL(Today I Learned)_데일리루틴_24.11.15.Fri (0) | 2024.11.15 |