본문 바로가기

프로그래머스

프로그래머스 SQL 고득점 Kit - GROUP BY 프로그래머스에서 SQL 고득점 Kit을 풀고 추가적으로 조사하여 얻은 지식을 정리하는 문서다. 문제를 풀 때는 익숙한 MySQL을 활용하였다. GROUP BY 이전 포스트에서도 몇 번 설명했었지만 GROUP BY는 레코드들을 특정 칼럼 값들을 기준으로 묶는 명령어다. 그래서 그룹화한 후 집계 함수를 사용하는 방식으로 많이 사용되는데 COUNT() 함수를 사용하여 해당 그룹에 몇 명이 있는지 출력하는 쿼리를 작성해보면 다음과 같다. MariaDB [vulnerable_db]> SELECT COMPANY, COUNT(NAME) FROM USER_TABLE GROUP BY COMPANY; +-----------------------------+-------------+ | COMPANY | COUNT(NAME.. 더보기
WITH (Common Table Expressions) 이 MySQL 문서와 이 튜토리얼을 읽고 얻은 지식을 정리하는 포스트다. WITH WITH란 키워드 자체는 들어본 적도, 써본 적도 없기 때문에 프로그래머스에서 SQL Kit 문제를 풀다가 처음 만났을 때 당혹스러웠다. 항상 모든 쿼리는 한 줄로 SELECT로 시작해서 조건으로 끝난다고 막연히 생각하고 있었는데 실제로는 더 복잡한 쿼리를 사용할 수도 있겠다는 느낌을 받았다. WITH 명령어의 목적은 해당 쿼리가 실행되기 전에 쿼리에서 참조할 수 있는 임시 테이블을 만드는 것이다. 이 임시 테이블 역시 특정 쿼리(서브 쿼리)의 결과로 생성되어야 하는데 적절하진 않지만 기존의 테이블을 활용하여 예시를 보이면 다음과 같다. MariaDB [vulnerable_db]> WITH MY_COMPANY AS (SEL.. 더보기
프로그래머스 SQL 고득점 Kit - SELECT 프로그래머스에서 SQL 고득점 Kit을 풀고 추가적으로 조사하여 얻은 지식을 정리하는 문서다. 문제를 풀 때는 익숙한 MySQL을 활용하였다. SELECT 기본적으로 SELECT는 레코드를 조회하는 명령어기 때문에 특정 조건(또는 모든)의 칼럼 값이나 문자열뿐 아니라 함수 실행의 결괏값을 얻어올 수 있다. 대표적인 예로 현재 시간을 반환하는 NOW() 함수를 SELECT 하면 다음과 같은 결과를 얻을 수 있다. MariaDB [(none)]> SELECT NOW(); +---------------------+ | NOW() | +---------------------+ | 2021-02-01 23:27:53 | +---------------------+ 1 row in set (0.000 sec) 보통 .. 더보기