Banner

My Tech Blog (SQL)

오늘의 명언
⚠️ 문제고립망 → 클라우드 배치테스트 실패고립망에서 클라우드로 데이터와 소스를 옮긴 뒤, 배치 테스트가 실패함.데이터만 이관하면 정상 작동할 것으로 예상했으나, 실행되지 않음.자페스에서는 이상 없음 뜸🧐 원인소스 코드 내부에 특정 SQL 실행 분기점에서트랜잭션 롤백이 무조건 발생하도록 작성되어 있었음. ⚡ 해결법플래그가 true로 설정되어 있을 때만 롤백하도록 if문 내에 정확히 조건을 설정한다. import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;public class TransactionRollbackExample { public ..
📑 1. 문제설명😉 2. 문제 요약문제에서 주어진 조건PATIENTDOCTORAPPOINTMENT환자 정보의사 정보진료 예약 목록PT_NO, PT_NAME, GEND_CD, AGE, TLNODR_NAME, DR_ID, LCNS_NO, HIRE_YMD, MCDP_CD, TLNOAPNT_YMD, APNT_NO, PT_NO, MCDP_CD, MDDR_ID, APNT_CNCL_YN, APNT_CNCL_YMD환자번호, 환자이름, 성별코드, 나이, 전화번호의사이름, 의사ID, 면허번호, 고용일자, 진료과코드, 전화번호진료 예약일시, 진료예약번호, 환자번호, 진료과코드, 의사ID, 예약취소여부, 예약취소날짜 문제쪼개기✅ 2022년 4월 13일 AP.APNT_YMD LIKE '2022-04-13%'✅ 취소되지 않은..
📑 1. 문제설명✏️ 2. 문제 요약문제에서 주어진 조건CAR_RENTAL_COMPANY_CAR CAR_RENTAL_COMPANY_RENTAL_HISTORY CAR_RENTAL_COMPANY_DISCOUNT_PLAN대여 중인 자동차들의 정보자동차 대여 기록 정보자동차 종류 별 대여 기간 종류 별 할인 정책 정보CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONSHISTORY_ID, CAR_ID, START_DATE, END_DATEPLAN_ID, CAR_TYPE, DURATION_TYPE, DISCOUNT_RATE- 자동차 ID,- 자동차 종류,- 일일 대여 요금(원),- 자동차 옵션 리스트,- 자동차 대여 기록 ID,- 자동차 ID- 대여 시작일, - 대여 종료일- 요금 할인 정책 ID,..
📑 1. 문제설명⭐ 2. 정답코드내가 푼 코드 ORDER BY DATEDIFF (입소일, 퇴소일)SELECT I.ANIMAL_ID, I.NAMEFROM ANIMAL_INS I JOIN ANIMAL_OUTS O ON I.Animal_id = O.Animal_idORDER BY DATEDIFF(I.DATETIME, O.DATETIME)LIMIT 2이렇게 해서 정답처리가 됬는데 다른 사람들이 쓴 코드를 보다가 뭔가 이상한 점 발견!보호소 퇴소일 - 입소일 을 해서 그 값이 큰 순서대로 2건을 반환하는 건데나는 입소일 - 퇴소일로 반대로 적었다 대신 오름차순으로 하니까 작동한다.🐦 3. 다른 사람들이 푼 코드ORDER BY DATEDIFF (퇴소일, 입소일) DESCSELECT I.ANIMAL_ID, I.N..
📑 1. 문제설명❌ 2. 실패한 시도위치틀린부분맞는 쿼리설명SELECTAVERAGEAVG()평균구하는 함수AVERAGE()가 아니고AVG()임 YEAR(YM)YEAR(YM) AS `YEAR`별칭 써야 함컬럼명 YEAR로 출력 ROUND(AVG(PM_VAL1),3) ROUND(AVG(PM_VAL1),2)소수셋째자리에서 반올림하려면 둘째자리까지 결과값이 나타나야 하니까ROUND(컬럼명, 2)로 해야 함WHERELocation2 IS '수원'Location2 = '수원'IS는 NULL 값과의 비교에서 만 사용됨ORDER BYYEAR(YM)YEARSQL의 실행순서는ORDER BY절이 가장마지막에 실행되기 때문에ALIAS 명으로 써줘도 된다꼭 별칭 써야하는 건 아님 SELECT YEAR(YM) AS YEAR,..
📑 1. 문제설명❌ 2. 실패한 코드 PRODUCT_CODE 컬럼이 예를 들면 'A1000011' 이기 때문에SUBSTRING(컬럼명,시작인덱스,끝인덱스)로 앞 두 자리만 떼어 내야 한다. SELECT SUBSTRING(Product_code,1,2) AS CATEGORY, COUNT(SUBSTRING(Product_code,1,2)) AS PRODUCTSFROM PRODUCTGROUP BY SUBSTRING(Product_code,1,2), Product_codeORDER BY Category; 내가 작성한 코드의 실행 결과를 보면 A2 기준으로 GROUP 으로 묶이지 않은 것을 확인 할 수 있다.⭐ 3. 정답코드GROUP BY 절에서 SUBSTRING(Product_code,1,2)로만 묶어야 함P..
📑 1. 문제설명❌ 2. 실패한 시도SELECT CASE WHEN SUBSTRING(DIFFERENTIATION_DATE, 6,7) IN ('01', '02', '03') THEN '1Q' WHEN SUBSTRING(DIFFERENTIATION_DATE, 6,7) IN ('04', '05', '06') THEN '2Q' WHEN SUBSTRING(DIFFERENTIATION_DATE, 6,7) IN ('07', '08', '09') THEN '3Q' WHEN SUBSTRING(DIFFERENTIATION_DATE, 6,7) IN ('10', '11', '12') THEN '4Q' END AS QUARTER, COUNT(..
📑 1. 문제설명❌ 2. 실패한 시도SELECT U.User_id, U.Nickname, CONCAT(U.City,' ', U.Street_address1, ' ', U.Street_address2) AS 전체주소, CONCAT(SUBSTR(TLNO, 1, 3), '-', SUBSTR(TLNO, 4, 4), '-', SUBSTR(TLNO, 8)) AS 전화번호FROM Used_goods_board B JOIN Used_goods_user U ON B.Writer_id = U.User_idHAVING COUNT(BOARD_ID) >= 3ORDER BY U.User_id DESC; - CONCAT 함수는 + 가 아니라 , 를 사용..
상단으로