Day16) 오늘 배운

SQL 연구 4일 자동차


색인

1. 중복 제거

2. 동물 수 세기

3. 최소값 찾기

4. 같은 이름을 가진 동물의 수 찾기

5. 이름에 엘이 포함된 동물 찾기

6. NULL 다루기

7. DATETIME에서 DATE로의 변환 입력

8. 가장 비싼 음식에 대한 정보 출력

9. 고양이와 개는 몇 마리인가요?

10. 중성화 수술을 받았는지 알기

11. 입양 시기 찾기 (1)

12. 범주별 제품 수 계산

13. 부서별 총 예약건수 출력

14. 루시와 엘라 찾기

15. 제품별 오프라인 매출 계산

16. 3월생 여자회원 명단 출력

17. 차종별 특정 옵션이 있는 차의 대수 계산

18. 기준에 부합하는 도서 및 저자 목록 출력

19. 재료별로 분류한 총 아이스크림 주문

20. 가격대별 제품 수 계산

21. 사용된 제품 및 회원 목록 가져오기

22. 조건에 맞는 중고거래현황 검색

23. 평균 렌터카 기간 알아보기


중복 제거



중복 제거 – 프로그래머 –

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.

Programmer.co.kr


문제 식별

동물 보호소로 보내진 동물은 몇 마리입니까?

쿼리할 SQL 문 쓰기

이름이 NULL이면 계산되지 않습니다.

중복된 이름은 하나로 계산됩니다.


WHERE 문이 NULL이 아닙니다.

0이 제거되었습니다.

DISTINCT()로 중복 제거

NAME이(가) 집계되었습니다.


SELECT COUNT(DISTINCT(NAME)) as count FROM ANIMAL_INS
WHERE NAME is not NULL



동물을 세다



동물 세기 – 프로그래머 –

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.

Programmer.co.kr


문제 식별

동물 보호소의 동물

새의 수를 쿼리하는 SQL 문을 작성하십시오.


동물의 수를 세기만 하면 됩니다.

계산하기


SELECT COUNT(*) as count FROM ANIMAL_INS



데이터의 수를 세었다.



최소값을 찾다

최소값 찾기 – 프로그래머 –

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.


Programmer.co.kr

문제 식별

보호소에 가장 먼저 들어온 동물


도착했을 때 쿼리할 SQL 문을 작성합니다.

내가 먼저 들어왔어

DATETIME은 오름차순으로 정렬됩니다.

오름차순으로 정렬하면 가장 빠른 날짜가 맨 위에 옵니다.


SELECT DATETIME as 시간 FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1



LIMIT이 1로 설정되어 하나만 출력되었습니다.



같은 이름을 가진 동물의 수 찾기

같은 이름을 가진 동물의 수 찾기 – 프로그래머 –

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.


Programmer.co.kr

문제 식별

동물 이름 중 두 번 이상 사용되는 이름

이름이 사용되는 빈도를 쿼리하는 SQL 문을 작성합니다.

결과는 이름이 없는 동물은 카운트에서 제외되었음을 보여줍니다.


이름으로 검색

먼저 이름으로 그룹화합니다.

SELECT NAME, count(*) as COUNT
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME
ORDER BY NAME


숫자를 세었다

Lucy가 3명인 것으로 확인되었습니다.

위의 코드는 하위 쿼리 문을 사용합니다.

SELECT * 
   FROM(
        SELECT NAME, count(*) as COUNT
        FROM ANIMAL_INS
        WHERE NAME IS NOT NULL
        GROUP BY NAME
        ORDER BY NAME
        ) table1


테이블로 사용.

위와 큰 차이는 없습니다.

그러나 여기서 이름의 수가 충족되는지 여부에 대한 질문이 발생합니다.

조건이 주어집니다.

WHERE COUNT >= 2

이름이 2개 이상인 것만 출력되기 때문에,


SELECT * 
   FROM(
        SELECT NAME, count(*) as COUNT
        FROM ANIMAL_INS
        WHERE NAME IS NOT NULL
        GROUP BY NAME
        ORDER BY NAME
        ) table1
WHERE COUNT >= 2
ORDER BY NAME



조건은 WHERE 문으로 충족됩니다.



이름에 엘이 포함된 동물 찾기

이름에 엘이 포함된 동물 찾기 – 프로그래머 –

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.


Programmer.co.kr

문제 식별

el이 포함된 개의 ID와 이름을 조회하는 SQL문을 작성하십시오.


결과는 이름별로 정렬됩니다.

WHERE, ‘엘’에서와 같이

동물 이름

동물 유형이 “개”인 경우에만.


SELECT ANIMAL_ID, NAME FROM ANIMAL_INS
WHERE NAME LIKE '%EL%' AND ANIMAL_TYPE = 'DOG'
ORDER BY NAME



추가 조건을 부여했습니다.



NULL 다루기

NULL 다루기 – 프로그래머 –

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.


Programmer.co.kr

문제 식별

동물의 종, 이름, 성별, 중성화 여부를 확인하세요.

ID로 쿼리할 SQL 문 만들기


이름이 없는 동물은 “이름 없음”으로 표시됩니다.

SELECT 문에서 CASE 문 사용

SELECT
       ANIMAL_TYPE,
       (
        CASE WHEN NAME IS NULL THEN "No name"
             ELSE NAME 
             END
       ) NAME,
       SEX_UPON_INTAKE

SELECT
       ANIMAL_TYPE,
       (
        CASE WHEN NAME IS NULL THEN "No name"
             ELSE NAME 
             END
       ) NAME,
       SEX_UPON_INTAKE
FROM 
       ANIMAL_INS
ORDER BY 
       ANIMAL_ID


NAME이 NULL이면 “이름 없음”이 지정됩니다.


“이름 없음”이 문제 없이 인쇄됩니다.




DATETIME부터 DATE까지 전송

DATETIME에서 DATE로 유형 변환 – 프로그래머 –

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.


Programmer.co.kr

문제 식별

테이블에 등록된 모든 레코드에 적용됩니다.

각 동물의 ID, 이름, 입장일로 검색

SQL 문 작성


결과는 ID 순으로 검색됩니다.

DATE_FORMAT() 사용

DATE_FORMAT(DATETIME, '%Y-%m-%d') as 날짜

SELECT 
       ANIMAL_ID,
       NAME,
       DATE_FORMAT(DATETIME, '%Y-%m-%d') as 날짜 
FROM   
       ANIMAL_INS
ORDER BY
       ANIMAL_ID



날짜를 원하는 형식으로 변경하십시오.



가장 비싼 음식에 대한 정보 인쇄

가장 비싼 음식에 대한 정보 제공 – 프로그래머 –

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.


Programmer.co.kr

문제 식별

가장 비싼 음식에 대한 정보


쿼리할 SQL 문 쓰기

가장 비싼 품목이므로 PRICE

내림차순 정렬 후


SELECT * FROM FOOD_PRODUCT
ORDER BY PRICE DESC
LIMIT 1



LIMIT은 하나만 출력합니다.



얼마나 많은 고양이와 개

얼마나 많은 고양이와 개가 있습니까-프로그래머-

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.


Programmer.co.kr

문제 식별

고양이와 개가 각각 몇 마리인지 물어보십시오.

SQL 문 작성


이 시점에서 개보다 고양이를 확인하십시오.

별을 개와 고양이에 묶기 위해

GROUP BY를 ANIMAL_TYPE으로 설정


SELECT ANIMAL_TYPE, COUNT(*) FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE



COUNT가 제공되었습니다.



중성화 수술을 했는지 알아보기

중성화 수술을 받았는지 알기 – 프로그래머 –

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.


Programmer.co.kr

문제 식별

동물의 ID, 이름 및 중성화 여부를 쿼리하는 SQL 문을 만듭니다.

중화를 위한 ‘O’,

중화되지 않은 경우 “X”로 표시됩니다.


결과는 ID 순으로 검색됩니다.

SELECT에 CASE 문 사용

문자 “중성화” 및 “중성화”

포함된 경우 ‘O’

그렇지 않으면 “X”로 표시되었습니다.

(
        CASE WHEN SEX_UPON_INTAKE LIKE 'Neutered%' THEN 'O'
             WHEN SEX_UPON_INTAKE LIKE 'Spayed%' THEN 'O'
             ELSE 'X'
             END
       ) AS 중성화

SELECT 
       ANIMAL_ID,
       NAME,
       (
        CASE WHEN SEX_UPON_INTAKE LIKE 'Neutered%' THEN 'O'
             WHEN SEX_UPON_INTAKE LIKE 'Spayed%' THEN 'O'
             ELSE 'X'
             END
       ) AS 중성화
  FROM 
       ANIMAL_INS
 ORDER BY
       ANIMAL_ID





입양 시기 찾기(1)

채용 시기 찾기(1) – 프로그래머 –

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.


Programmer.co.kr

문제 식별

09:00부터 19:59까지, 모든 시간대

인계가 발생한 횟수를 쿼리하는 SQL 문을 작성합니다.


결과는 기간별로 정렬되어야 합니다.

방법 1

HOUR(DATETIME)

위의 함수로만 시간을 얻을 수 있습니다.

WHERE HOUR(DATETIME) >= 9 AND HOUR(DATETIME) < 20

SELECT HOUR(DATETIME) , COUNT(*) FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) >= 9 AND HOUR(DATETIME) < 20
GROUP BY HOUR(DATETIME)
ORDER BY HOUR(DATETIME)



그 후 WHERE 절에 9:00에서 20:00까지의 범위를 지정했습니다.

방법 2

가지다

GROUP BY 문에서 또는

SELECT 문에서 사용하는 컬럼만 사용할 수 있습니다.

BETWEEN AND는 시간 범위를 나타내는 데 사용되었습니다.

HAVING HOUR BETWEEN 9 AND 19

SELECT HOUR(DATETIME) AS HOUR , COUNT(*) FROM ANIMAL_OUTS
GROUP BY HOUR(DATETIME)
HAVING HOUR BETWEEN 9 AND 19
ORDER BY HOUR(DATETIME)





범주당 제품 수 결정

범주별 제품 수 찾기 – 프로그래머 –

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.


Programmer.co.kr

문제 식별

제품 범주 코드별로 제품 수를 반환합니다.

SQL 문 작성

결과는 제품 범주 코드를 기반으로 합니다.


오름차순 정렬

서브스트링() 포함

SUBSTRING(PRODUCT_CODE, 1, 2) AS CATEGORY

PRODUCT_CODE가 두 번째 글자만 잘렸습니다.

이후 별칭으로 지정된 CATEGORY를 기준으로

GROUP BY CATEGORY
ORDER BY CATEGORY

SELECT SUBSTRING(PRODUCT_CODE, 1, 2) AS CATEGORY, COUNT(PRODUCT_ID) FROM PRODUCT
GROUP BY CATEGORY
ORDER BY CATEGORY



나는 GROUP BY와 ORDER BY를 했다.



부서별 총 발령인원 표시

부서별 총 약속 수 출력 – 프로그래머 –

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.


Programmer.co.kr

문제 식별

부서 코드별로 2022년 5월에 예약된 환자 수를 쿼리하는 SQL 문을 만듭니다.

열 이름은 “Clinical Department Code” 및 “Number of Reservations in May”로 제공합니다.

결과는 부서별 예약 환자 수를 기준으로 오름차순으로,


예약된 환자 수가 같을 경우 부서 코드별로 오름차순으로 정렬합니다.

WHERE MONTH(APNT_YMD) = 5

MONTH()는 날짜에서 필요한 월을 뺍니다.

그리고 ‘5월 예약건수’가 정렬 조건으로 우선순위가 됩니다.

GROUP BY 진료과코드
ORDER BY 5월예약건수, 진료과코드

SELECT MCDP_CD AS 진료과코드, COUNT(APNT_YMD) AS 5월예약건수 FROM APPOINTMENT
WHERE MONTH(APNT_YMD) = 5
GROUP BY 진료과코드
ORDER BY 5월예약건수, 진료과코드



‘병원 코드’에 다음과 같은 정렬 조건이 지정되었습니다.



루시와 엘라를 찾아라

루시와 엘라를 찾아서 – 프로그래머 –

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.


Programmer.co.kr

문제 식별

그의 이름은 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty입니다.

동물 ID 및 이름, 성별 및 중성화 여부


쿼리 SQL 문을 작성해야 합니다.

in()에 해당하는 이름이 있는 경우

WHERE NAME IN ('Lucy','Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')

SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE FROM ANIMAL_INS
WHERE NAME IN ('Lucy','Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')



출력 조건.




제품별 오프라인 매출 계산

제품별 오프라인 매출 계산 – Programmer –

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.


Programmer.co.kr

문제 식별

PRODUCT 테이블 및 OFFLINE_SALE 테이블에서

상품코드별 판매금액(판매가격 * 판매수량)을 반환합니다.

SQL 문 작성

결과는 수익 내림차순,


동일매출의 경우 상품코드별 오름차순

INNER JOIN OFFLINE_SALE o ON p.PRODUCT_ID = o.PRODUCT_ID

PRODUCT_ID를 키로 사용하여 두 테이블을 조인합니다.

GROUP BY p.PRODUCT_CODE

그룹은 SUM()을 사용하기 전에 그룹화되었습니다.

SUM(
p.PRICE * o.SALES_AMOUNT
)
SALES

SELECT 
       p.PRODUCT_CODE,
       SUM(
        p.PRICE * o.SALES_AMOUNT
       )
       SALES
FROM PRODUCT p
INNER JOIN OFFLINE_SALE o ON p.PRODUCT_ID = o.PRODUCT_ID
GROUP BY p.PRODUCT_CODE
ORDER BY SALES DESC, p.PRODUCT_CODE



그 후 SUM을 사용하여 그룹에 추가되었습니다.



3월생 여성회원 명단 출력

3월생 여성회원 명단 출력 – 프로그래머 –

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.


Programmer.co.kr

문제 식별

생일이 3월인 여성에 대한 정보를 찾고 있습니다.

SQL 문 작성

전화번호가 NULL이면 출력 대상에서 제외됩니다.


결과는 회원 ID별로 오름차순으로 정렬됩니다.

DATE_FORMAT() 사용

날짜 중 원하는 부분만 가져왔습니다.


‘%Y-%M-%d’로 출력되는 경우


GENDER, DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') as DATE_OF_BIRTH

‘%Y-%m-%d’로 출력되는 경우

 WHERE 
       TLNO IS NOT NULL
   AND 
       GENDER = 'W' 
   AND 
       MONTH(DATE_OF_BIRTH) = 3

WHERE 문에서 문제에 필요한 조건을 설정합니다.

SELECT 
       MEMBER_ID,
       MEMBER_NAME,
       GENDER, DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') as DATE_OF_BIRTH 
  FROM MEMBER_PROFILE
 WHERE 
       TLNO IS NOT NULL
   AND 
       GENDER = 'W' 
   AND 
       MONTH(DATE_OF_BIRTH) = 3
ORDER BY
       MEMBER_ID





차량 유형별로 특정 옵션이 있는 차량 수 찾기

차종별 특정 옵션의 차수 찾기 – Programmer –

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.


Programmer.co.kr

문제 식별

“통풍시트”, “온열시트”, “가죽시트” 중 하나 이상의 옵션이 선택되었습니다.

포함된 자동차의 수를 자동차 유형별로 출력하는 SQL 문을 작성하십시오.

대수 컬럼명은 CARS로 표기하고,


클래스는 차량 유형별로 오름차순으로 정렬됩니다.

어디서, 어떻게 그리고

1개 이상일 경우 OR을 쓴다.


SELECT CAR_TYPE, COUNT(*) AS CARS FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%통풍시트%' 
   OR OPTIONS LIKE '%열선시트%'
   OR OPTIONS LIKE '%가죽시트%'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE



모든 정보를 추출할 수 있습니다.



기준에 부합하는 도서 및 저자 목록 출력

조건에 맞는 책과 저자 목록 출력 – 프로그래머 –

코딩 테스트 실습 – 조건에 맞는 도서 및 저자 목록 출력

다음은 서점에서 구할 수 있는 책의 도서정보(BOOK)와 저자정보(AUTHOR)의 표이다. BOOK 테이블은 각 책에 대한 정보를 담고 있는 테이블로 다음과 같은 구조를 갖는다. 열 이름 Null 입력 가능


school.programmers.co.kr

문제 식별

Business 카테고리에 속하는 도서의 도서 ID, 저자 이름, 발행일

목록을 출력하는 SQL 문 만들기


결과는 게시 날짜를 기준으로 오름차순으로 정렬됩니다.

내부 가입

AUTHOR_ID가 공통 키 값으로 병합되었습니다.

INNER JOIN 
       AUTHOR a 
    ON b.AUTHOR_ID = a.AUTHOR_ID

SELECT 
       b.BOOK_ID,
       a.AUTHOR_NAME,
       (
        DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d')
       )
       PUBLISHED_DATE
  FROM 
       BOOK b
INNER JOIN 
       AUTHOR a 
    ON b.AUTHOR_ID = a.AUTHOR_ID
WHERE 
       b.CATEGORY = '경제'
ORDER BY
       PUBLISHED_DATE






재료별로 분류된 총 아이스크림 주문

재료별 아이스크림 주문 – 프로그래머 –

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.


Programmer.co.kr

문제 식별

아이스크림 재료 종류 및 재료 종류에 대하여

총 아이스크림 주문

주문 총액을 내림차순으로 쿼리하는 SQL 문을 작성하십시오.


열 이름은 TOTAL_ORDER여야 합니다.

INNER JOIN ICECREAM_INFO i
        ON f.FLAVOR = i.FLAVOR

FLAVOR를 키 값으로 사용하여 두 테이블을 JOIN합니다.

SUM을 수행하기 전에 그룹별로 추가하려면

먼저 INGREDIENT_TYPE으로

  GROUP BY i.INGREDIENT_TYPE

그룹핑 파워.

그룹화 후 SUM() 사용

SUM(
     f.TOTAL_ORDER
   ) TOTAL_ORDER

    SELECT i.INGREDIENT_TYPE,
           SUM(
             f.TOTAL_ORDER
           ) TOTAL_ORDER
           
      FROM FIRST_HALF f
      
INNER JOIN ICECREAM_INFO i
        ON f.FLAVOR = i.FLAVOR
  GROUP BY i.INGREDIENT_TYPE
  ORDER BY f.TOTAL_ORDER



그룹별로 추가합니다.



가격대별로 제품 수 결정

가격대별로 제품 수 찾기 – 프로그래머 –

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.


Programmer.co.kr

문제 식별

테이블에 만원 단위의 가격대별 상품 개수를 반환하는 SQL 문을 작성하세요.

열 이름은 각각 PRICE_GROUP 및 PRODUCTS로 참조됩니다.

가격대 정보는 구간별 최소 금액으로 표시됩니다.결과는 가격 범위의 오름차순으로 정렬됩니다.


.

A div B : A를 B로 나눈 몫을 반환합니다.

price div 10000

가격 열의 각 레코드를 10000으로 나누어 몫을 반환합니다.

PRICE_GROUP으로 그룹화


SELECT (price div 10000) * 10000 as PRICE_GROUP, count(*) as PRODUCTS
from product
group by PRICE_GROUP
order by PRICE_GROUP;


계산하기

하다


남의 코드를 보면서 이러는구나 하는 생각이 들 정도였다.



다음에 다시 풀어보도록 하겠습니다.

교환된 제품 및 회원 목록 가져오기

재구매한 제품 및 회원 목록 가져오기 -프로그래머-

코딩 테스트 실습 – 재구매 상품 및 회원 목록 찾기


다음은 특정 의류몰의 온라인 상품 판매 정보를 담고 있는 ONLINE_SALE 테이블이다. ONLINE_SALE 테이블의 구조는 다음과 같으며 ONLINE_SALE_ID, USER_ID, PRODUCT_ID, SALES_AMOUNT 및 SALES_DATE는

school.programmers.co.kr

문제 식별

동일 회원의 동일 상품 재구매 데이터를 제공받아,

상환되는 회원의 ID와 상환되는 제품의 ID를 반환하는 SQL 문을 생성합니다.


결과는 회원 ID를 기준으로 오름차순으로 정렬됩니다.

구성원 ID가 동일한 경우 제품 ID별로 내림차순으로 정렬합니다.


SELECT USER_ID, PRODUCT_ID FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(USER_ID) >= 2
ORDER BY USER_ID, PRODUCT_ID desc


USER_ID와 PRODUCT_ID를 그룹화한 후

카운트 2 이상.


두 그룹이 동시에 카운트되는 경우입니다.



주제를 다시 살펴봐야 합니다.

조건에 맞는 중고거래현황 찾기

조건에 맞는 중고거래현황 찾기 – 프로그래머 –

프로그램 제작자


코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.

Programmer.co.kr

문제 식별

2022년 10월 5일 중고거래소 정보를 다음과 같이 등록하였습니다.

쿼리할 SQL 문 쓰기

거래 상태가 SOLD이면 판매 중인 것입니다.

RESERVED이면 예약되고,


완료되면 완료된 트랜잭션으로 출력

결과는 게시물 ID를 기준으로 내림차순으로 정렬됩니다.

CASE문으로 문제의 조건에 맞게 출력

(
        CASE WHEN STATUS = 'SALE' THEN '판매중'
             WHEN STATUS = 'RESERVED' THEN '예약중'
             ELSE '거래완료'
             END
       ) STATUS

SELECT 
       BOARD_ID, 
       WRITER_ID, 
       TITLE, 
       PRICE,
       (
        CASE WHEN STATUS = 'SALE' THEN '판매중'
             WHEN STATUS = 'RESERVED' THEN '예약중'
             ELSE '거래완료'
             END
       ) STATUS
  FROM USED_GOODS_BOARD
WHERE DATE_FORMAT(CREATED_DATE, '%Y-%m-%d') = '2022-10-05'
ORDER BY BOARD_ID DESC



완전한



자동차의 평균 임대 기간 계산

평균 대여 기간 계산 – 프로그래머 –

프로그램 제작자


코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.

Programmer.co.kr

문제 식별

평균 대여 기간이 7일 이상인 차량의 자동 ID

평균 대여 기간 목록을 반환하는 SQL 문을 만듭니다.

평균임대기간은 소수점 둘째자리에서 반올림,


결과는 평균 대여 기간의 내림차순으로 정렬됩니다.

평균 대여 기간이 같으면 차량 ID 내림차순으로 정렬합니다.

DATEDIFF(): 날짜 간의 차이를 반환합니다.


SELECT c.CAR_ID,
       ROUND(AVG(DATEDIFF(c.END_DATE,c.START_DATE)+1),1) AS AVERAGE_DURATION 
  FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY c
GROUP BY c.CAR_ID
HAVING AVERAGE_DURATION >= 7
ORDER BY AVERAGE_DURATION DESC, c.CAR_ID DESC



대여 기간은 대여한 시점부터 처리됩니다.

따라서 날짜 차이에 +1을 더해야 합니다.

오늘 하루 종일 SQL 문제를 풀다보니 어제보다 기분이 좋아졌다.