Giter Site home page Giter Site logo

codingtest's Introduction

CodingTest_JS

codingtest's People

Contributors

cocorig avatar

Watchers

Kostas Georgiou avatar

codingtest's Issues

MySQL | 없어진 기록 찾기

없어진 기록 찾기

  • ANIMAL_OUTS 테이블에서 ANIMAL_INS의 같은 아이디가 없는 ANIMAL_ID ,NAME을 추출
SELECT
    AO.ANIMAL_ID,
    AO.NAME
FROM
    ANIMAL_OUTS AO -- 기준
LEFT JOIN
    ANIMAL_INS AI ON AO.ANIMAL_ID = AI.ANIMAL_ID
WHERE
    AI.ANIMAL_ID IS NULL

  • 일반적으로 주요 정보를 가져오고자 하는 테이블을 왼쪽 테이블로 지정하고, 여기선 ANIMAL_OUTS를 지정.
  • LEFT JOIN은 왼쪽 테이블의 모든 레코드를 포함하고, 오른쪽 테이블과 매치되는 레코드가 있으면 함께 반환하는 것.
  • 매치되는 부분 중에 없는 경우를 선택해야 하기 때문에 조건을 NULL로 지정해 레코드에 없는 경우만 선택한다.
  • 따라서 ANIMAL_OUTS에 있는데 ANIMAL_INS에 없는 레코드를 찾을 수 있다.

MySQL | 그룹별 조건에 맞는 식당 목록 출력하기

문제

스크린샷 2024-01-23 오전 12 32 28 스크린샷 2024-01-23 오전 12 32 41

풀이

  1. MEMBER_PROFILE 테이블과 REST_REVIEW 테이블을 회원 ID를 기준으로 조인
SELECT
  A.MEMBER_NAME,
  B.REVIEW_TEXT,
  DATE_FORMAT(B.REVIEW_DATE, "%Y-%m-%d") AS REVIEW_DATE
FROM
  MEMBER_PROFILE A
JOIN
  REST_REVIEW B ON A.MEMBER_ID = B.MEMBER_ID
  1. WHERE 절에서 하위 쿼리를 사용하여 리뷰를 가장 많이 작성한 회원의 MEMBER_ID를 선택
    MEMBER_ID를 서브쿼리로 선택하여 해당 회원의 리뷰만을 조회
WHERE
  A.MEMBER_ID = (
    SELECT MEMBER_ID
    FROM REST_REVIEW
    GROUP BY MEMBER_ID
    ORDER BY COUNT(*) DESC
    LIMIT 1
  )
  1. ORDER BY 절에서 리뷰 작성일을 기준으로 오름차순으로 정렬,리뷰 작성일이 동일한 경우에는 리뷰 텍스트를 기준으로 오름차순 정렬
ORDER BY
  REVIEW_DATE ASC,
  REVIEW_TEXT ASC;

MySQL | 즐겨찾기가 가장 많은 식당 정보 출력하기

문제

REST_INFO 테이블에서 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요

FOOD_TYPE별 로 묶어서 FAVORITES 수를 기준으로 내림차로 정렬

SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES,
           ROW_NUMBER() OVER(PARTITION BY FOOD_TYPE ORDER BY FAVORITES DESC) as rn
 FROM REST_INFO
스크린샷 2024-01-05 오후 3 33 59

순위가 1인 데이터만 선택해 음식 종류를 기준으로 내림차순 정렬한다

SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM (
    SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES,
           ROW_NUMBER() OVER(PARTITION BY FOOD_TYPE ORDER BY FAVORITES DESC) as rn
    FROM REST_INFO
) ranked   -- 내부쿼리의 결과를 담은 임시 테이블 이름
WHERE rn = 1
ORDER BY FOOD_TYPE DESC;
스크린샷 2024-01-05 오후 3 41 14

ROW_NUMBER()

  • 각 PARTITION 내에서 ORDER BY절에 의해 정렬된 순서를 기준으로 고유한 값을 반환하는 함수 , 행에 번호를 부여
ROW_NUMBER() OVER(PARTITION BY [그룹핑할 컬럼] ORDER BY [정렬할 컬럼])
- PARTITION BY는 선택, ORDER BY는 필수
  • RANK() : 1등이 두명이면, 그 다음 순위는 3등이 된다.

  • DENSE_RANK() : 1등이 두명이면 그 다음 순위는 2등이 된다.

  • ROW_NUMBER() 함수는 행에 번호를 부여

  • OVER() 함수 내부에 PARTITION BY FOOD_TYPE 구문은 데이터를 FOOD_TYPE 컬럼을 기준으로 그룹화한다.

  • 즉, 같은 음식 종류를 가진 데이터끼리 묶어 출력한다.

  • ORDER BY FAVORITES DESC는 각 그룹 내에서 FAVORITES 컬럼을 내림차순으로 정렬한다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.