전체 글 220

[MySQL] 프로그래머스 년, 월, 성별 별 상품 구매 회원 수 구하기

문제:USER_INFO 테이블과 ONLINE_SALE 테이블에서 년, 월, 성별 별로 상품을 구매한 회원수를 집계 - 결과는 년, 월, 성별을 기준으로 오름차순 정렬 - 성별 정보가 없는 경우 결과에서 제외 해결방법:1. 유저 테이블과 판매내역 테이블을 INNER JOIN2. SALES_DATE 컬럼에서 YEAR와 MONTH 를 추출3. SELECT 절에서 COUNT DISTINCT 와 GROUP BY 를 사용하여 USER_ID 를 카운트4. WHERE 조건으로 성별이 NULL 값이 아닌 경우만 사용하도록 함 예시 코드:SELECT YEAR(SALES_DATE) YEAR, MONTH(SALES_DATE) MONTH, GENDER, COUNT(DISTINCT USER_ID) USERSFROM(SELECT ..

[SQL] 연습 2025.01.28

[MySQL] 프로그래머스 우유와 요거트가 담긴 장바구니

문제:우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회 해결 방법:1. 장바구니ID 별로 GROUP_CONCAT 을 해서 장바구니 내용을 조회2. 장바구니에 우유와 요거트가 같이 담겨있는지 조건 설정 예시 코드:SELECT CART_IDFROM (SELECT CART_ID, GROUP_CONCAT(NAME) NAMESFROM CART_PRODUCTSGROUP BY CART_ID) T1WHERE NAMES LIKE "%Milk%" AND NAMES LIKE "%Yogurt%"ORDER BY CART_ID;

[SQL] 연습 2025.01.26

[MySQL] 프로그래머스 저자 별 카테고리 별 매출액 집계하기

문제:2022년 1월의 도서 판매 데이터를 기준으로 저자 별, 카테고리 별 매출액(TOTAL_SALES = 판매량 * 판매가), 저자 ID(AUTHOR_ID), 저자명(AUTHOR_NAME), 카테고리(CATEGORY), 매출액(SALES) 리스트를 출력 - 결과는 저자 ID를 오름차순, 카테고리를 내림차순 정렬 해결방법:1. 도서 판매 테이블에서 판매일에 대한 기준을 WHERE 절에서 설정2. 책 ID를 기준으로 한 INNER JOIN과 저자 ID 를 기준으로 한 INNER JOIN이 필요3. GROUP BY 로 저자 별, 카테고리 별 매출액을 계산 예시 코드:SELECT A.AUTHOR_ID, AUTHOR_NAME, CATEGORY, SUM(TOTAL_SALES) TOTAL_SALESFROM AUTH..

[SQL] 연습 2024.12.29

[MySQL] 프로그래머스 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기

문제:조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬 해결방법:1. 파일경로 출력을 위해서 CONCAT 사용2. 조회수와 파일명 테이블을 BOARD_ID 기준으로 INNER JOIN3. WHERE 절에서 최대 조회수 조건 설정4. ORDER BY 내림차순 정렬 예시 코드:SELECT CONCAT('/home/grep/src/', F.BOARD_ID, '/', F.FILE_ID, F.FILE_NAME, F.FILE_EXT) FILE_PATHFROM USED_GOODS_BOARD BINNER JOIN USED_GOODS_FILE FON B.BOARD_ID = F.BOARD_IDWHERE B.VIEWS = (SELECT MAX(VIEWS)..

[SQL] 연습 2024.12.28

[MySQL] 프로그래머스 자동차 평균 대여 기간 구하기

문제:평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간 리스트를 출력 - 평균 대여 기간은 소수점 두번째 자리에서 반올림 - 평균 대여 기간을 기준으로 내림차순 정렬, 평균 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬 해결방법:1. 평균 대여 기간은 ID를 기준으로 GROUP BY, AVG 사용2. 대여 기간을 계산하기 위해서는 DATEDIFF 사용3. ORDER BY 로 정렬 예시 코드:SELECT CAR_ID, ROUND(AVG(DATEDIFF(END_DATE, START_DATE)+1), 1) AVERAGE_DURATIONFROM CAR_RENTAL_COMPANY_RENTAL_HISTORYGROUP BY CAR_IDHAVING AVERAGE_DURATION >= 7..

[SQL] 연습 2024.12.24

[MySQL] 프로그래머스 자동차 대여 기록에서 장기/단기 대여 구분하기

문제:대여 시작일이 2022년 9월에 속하는 대여 기록에 대해서 대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 대여기록을 출력 - 결과는 대여 기록 ID를 기준으로 내림차순 정렬 해결방법:1. 대여기간 차이는 DATEDIFF() 함수를 사용2. IF 문으로 장기 대여와 단기 대여 구분3. DATE_FORMAT() 으로 날짜 형식 설정4. 대여 시작일은 WHERE 절에서 BETWEEN A AND B 로 설정 예시 코드:SELECT HISTORY_ID, CAR_ID, DATE_FORMAT(START_DATE, "%Y-%m-%d") START_DATE, DATE_FORMAT(END_DATE, "%Y-%m-%d") END_DATE, IF(DATEDIFF(END_DATE, S..

[SQL] 연습 2024.12.22

[MySQL] 프로그래머스 특정 물고기를 잡은 수 구하기

문제:FISH_INFO 테이블에서 잡은 BASS와 SNAPPER의 수를 출력 해결방법:1. 종류별 수가 아닌 전체 수를 구하면 되므로 COUNT() 사용2. FISH_INFO 테이블과 FISH_NAME_INFO 테이블을 INNER JOIN3. WHERE - IN 을 사용하여 BASS 와 SNAPPER 만 조회 예시 코드:SELECT COUNT(1) FISH_COUNTFROM FISH_INFO T1INNER JOIN FISH_NAME_INFO T2ON T1.FISH_TYPE = T2.FISH_TYPEWHERE T2.FISH_NAME IN ("BASS", "SNAPPER");

[SQL] 연습 2024.12.21

[MySQL] 프로그래머스 서울에 위치한 식당 목록 출력하기

문제:서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회 - 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 - 결과는 평균점수를 기준으로 내림차순 정렬, 즐겨찾기수를 기준으로 내림차순 정렬 해결방법:1. 리뷰 평균점수는 식당 ID 별 GROUP BY로 계산2. 식당 ID 로 식당 정보 테이블과 리뷰 테이블을 조인3. 서울에 위치한 식당을 찾기 위해 LIKE 사용4. ORDER BY 로 점수와 즐겨찾기 수 기준으로 내림차순 정렬 예시 답안:SELECT I.REST_ID, I.REST_NAME, I.FOOD_TYPE, I.FAVORITES, ADDRESS, ROUND(AVG(R.REVIEW_SCORE), 2) AS SCOREFROM REST_INFO AS..

[SQL] 연습 2024.12.20

[MySQL] 프로그래머스 조건에 맞는 사원 정보 조회하기

문제:2022년도 평가 점수가 가장 높은 사원들의 점수, 사번, 성명, 직책, 이메일을 조회 해결방법:1. GROUP BY 로 평가 점수 상하반기 SUM()2. 2022년도에 해당하는 점수만 계산하도록 설정3. 가장 높은 평가 점수 확인을 위해 MAX() 사용4. 여러 테이블 조인에 INNER JOIN 사용5. HAVING 을 사용하여 최고 점수를 가진 레고드 반환 예시 코드:SELECT SUM(G.SCORE) SCORE, G.EMP_NO, E.EMP_NAME, E.POSITION, E.EMAILFROM (SELECT * FROM HR_GRADE WHERE YEAR = 2022) GINNER JOIN HR_EMPLOYEES EON G.EMP_NO = E.EMP_NOGROUP BY G.E..

[SQL] 연습 2024.12.08

중세 서양 철학 - 동서양의 지혜를 잇다: 아비센나의 철학 이야기

안녕하세요! 오늘은 중세 이슬람 세계의 위대한 사상가 아비센나에 대해 이야기해보려고 합니다.어려운 철학 이야기라고 걱정하지 마세요. 최대한 쉽게 설명해드리겠습니다. 천재의 탄생아비센나는 980년에 현재의 우즈베키스탄 지역에서 태어났습니다.그는 어릴 때부터 놀라운 재능을 보였는데요, 10살도 되기 전에 이미 이슬람 경전인 코란을 모두 외웠다고 합니다.마치 어린 모차르트처럼 말이죠! 철학자이자 의사로서의 삶아비센나는 철학자이면서 동시에 뛰어난 의사였습니다.특히 그의 의학 지식은 매우 뛰어나서, 젊은 나이에도 많은 사람들이 그에게 치료를 받으러 왔다고 해요.그는 마치 중세 시대의 종합 병원 같은 존재였던 거죠! 그의 의학 지식은 단순히 질병 치료에만 국한되지 않았습니다.그는 "의학의 정전(Canon of Me..

일상 2024.12.07

[MySQL] 취소되지 않은 진료 예약 조회하기

문제PATIENT, DOCTOR 그리고 APPOINTMENT 테이블에서 2022년 4월 13일 취소되지 않은 흉부외과(CS) 진료 예약 내역을 조회- 진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시 컬럼을 출력- 진료예약일시를 기준으로 오름차순 정렬 해결방법1. 조건 3개를 동시에 설정: 예약일시, 진료과코드, 취소여부2. APPOINTMENT 테이블을 기준으로 PATIENT, DOCTOR 테이블을 INNER JOIN3. 정렬 조건 설정 예시 코드SELECT APNT.APNT_NO, P.PT_NAME, P.PT_NO, APNT.MCDP_CD, D.DR_NAME, APNT.APNT_YMDFROM APPOINTMENT APNT INNER JOIN PATIENT P ON P.PT_..

[SQL] 연습 2024.12.06

Google AI Studio 에서 그라운딩(Grounding) 활용하기

Gemini는 Google의 최신 AI 모델로, 강력한 자연어 처리 능력과 함께 멀티모달 기능을 제공합니다. 특히 최근에는 Google이 Gemini API와 Google AI Studio에 새로운 Google Search에 기반한 그라운딩 기능을 도입했습니다.따라서 이번 포스팅에서는 Google AI Studio 에서 Google Search 기반 그라운딩을 무료로 사용할 수 있는 방법을 상세히 알아보겠습니다. - 그라운딩이란?일반적으로 그라운딩(Grounding)은 AI 모델의 응답을 신뢰할 수 있는 문서나 데이터에 "접지(ground)"시키는 기술입니다.이러한 기술이 필요한 이유는 AI의 환각(hallucination) 현상을 줄이고, 응답의 출처를 명확히 추적하기 위해서 입니다.결과적으로는 생성형..

워크시트 2024.12.01

무료 AI 웹사이트 추천: 사진 속 물체 제거하기

여행 중 찍은 인생샷에 지나가는 행인이 찍혔거나, 풍경 사진에 전봇대가 거슬리시나요? 이제는 복잡한 포토샵 없이도 클릭 몇 번으로 깔끔하게 지울 수 있답니다. 아래 사이트에 편집을 원하는 사진을 올리고,브러시의 크기를 정해서 삭제하고 싶은 부분을 설정해주면 됩니다. AI 의 결과물이 항상 일관성 있게 나오지는 않기 때문에, 원하는 결과를 얻기 위해서 여러번 시도해야 할수도 있습니다.저는 브러시의 크기를 좀 작게 해서 뒤에 있는 사람을 삭제해보았습니다. 이상한 부분없이 잘 삭제된 결과를 얻을 수 있었습니다. 사진을 다운받을때 고화질을 원하면 가입을 해야하고, 아니면 무료로 다운이 가능합니다.필요하신 분들은 잘 사용하시기 바랍니다.감사합니다. https://www.photoroom.com/tools/remo..

일상 2024.11.30

[MySQL] 프로그래머스 자동차 대여 기록에서 대여 가능여부 구분하기

문제:자동차 ID와 AVAILABILITY 리스트를 출력- 2022년 10월 16일에 대여 중인 자동차인 경우 '대여중' 이라고 표시하고, 대여 중이지 않은 자동차인 경우 '대여 가능'을 표시- 반납 날짜가 2022년 10월 16일인 경우에도 '대여중'으로 표시해주시고 결과는 자동차 ID를 기준으로 내림차순 정렬 해결방법:1. IF 문과 BETWEEN A AND B 를 활용하여 가능여부 판단하기2. GROUP BY 를 통해 자동차별 가능 여부 정리하기3. 마지막으로 CASE 문으로 원하는 형태의 출력 만들기 예시 코드:SELECT CAR_ID, CASE SUM(IF(DATE("2022-10-16") BETWEEN START_DATE AND END_DATE, 1, 0))WHEN 1 THEN "대여중"WHE..

[SQL] 연습 2024.11.29

[MySQL] 프로그래머스 재구매가 일어난 상품과 회원 리스트

문제:동일한 회원이 동일한 상품을 재구매한 데이터를 구하여, 재구매한 회원 ID와 재구매한 상품 ID를 출력 - 회원 ID를 기준으로 오름차순 정렬, 상품 ID를 기준으로 내림차순 정렬 해결방법:1. 유저별, 상품별 재구매건이므로 GROUP BY 로 조회2. 조회한 유저별, 상품별 레코드가 중복일 경우 COUNT(1) 한 값은 2 이상3. ORDER BY로 정렬 처리하기 에시 코드:SELECT USER_ID, PRODUCT_IDFROM ONLINE_SALEGROUP BY USER_ID, PRODUCT_IDHAVING COUNT(1) > 1ORDER BY USER_ID ASC, PRODUCT_ID DESC;

[SQL] 연습 2024.11.24