알고리즘 sql 코드카타
오늘의 sql코드카타 연습 중 시행착오가 있었던 몇 가지 문제 해결 과정을 적어본다.
12번 문제 - 이름에 el 들어가는 개 찾기
-- 코드를 입력하세요 SELECT animal_id, name from animal_ins where animal_type = 'dog' , name like "%el%" order by name |
로 하면 실행되지 않는다. where 조건이 2가지 모두 충족해야 하므로 and 로 묶어주어야 한다.
SELECT animal_id, name from animal_ins where animal_type = 'dog' and name like "%el%" order by name |
16번 문제 - 경기도에 위치한 식품창고 목록 출력하기
SELECT warehouse_id, warehouse_name, address, case when freezer_yn is null then 'N' else freezer_yn end freezer_yn from food_warehouse where address like "%경기%" order by warehouse_id asc |
if 구문 쓰려고 시도했으나 실행되지 않았다. case when 쓰는게 맞다. else로 나머지들은 그대로 예/아니오로 놔둬야 하므로.
그리고 경기도 조건을 빼먹지 않아야함!
주어진 문제를 꼼꼼하게 잘 읽고 어떤 식으로 조건을 줄지 찬찬히 이해하고 시작하는것이 중요하겠다.
3주차 SQL 라이브 세션 내용 및 아티클스터디 2회차 내용
아티클 활동 내용을 아래와 같다.
그러나 group by 열1,열2 열의 순서는 비추천(쿼리 길거나 남이 볼 땐 이해어려움) 2)그룹핑하여 보고싶은 값의 내용은 무엇인가?(총계, 평균, 최대, 최소, 편차 등) 주의점 : 특정 열을 기준으로 그룹핑 한 뒤에는 더 이상 개별 데이터 나열x
having 은 where과 마찬가지로 논리연산자, 비교, 범위 또는 목록, 나열 등을 조건으로 가질 수 있으며, 콤마(,)를 통해 연력하여 여러 개의 조건을 가질 수도 있음
|
실제로 아티클에서 말한 것 처럼 데이터를 조회/추출하기 위한 sql의 구체적인 문법과 함수에서는 엑셀과 비교했을 때 사용법의 차이만 있을 뿐 , 엑셀에서 사용하던 함수와 그 문법 구조가 크게 다르지 않아 적응에 크게 어렵지 않았다. 쿼리구조에서 group by 대분류 이 부분을 기계적으로만 작성해왔고 왜인지 이유를 생각해보지 않았는데, 이 아티클에서 자세하게 풀어서 설명해줘서 좋았다. 쿼리의 아주 기본구조지만 이를 이해하고 사용하는 것과 단순암기하고 도구로만 사용하는 것의 차이를 느꼈다. |
+
라이브 세션에서 where 구문과 having 구문 사용의 차이에 대해 이해가 살짝 덜 되어서 아티클스터디 때 관련 아티클을 정하여 스터디 진행하였다. 스터디 후에도 이해가 가지 않는 부분에 대해 여쭤보기 위해 조원들과 현경튜터님 찾아가서 자세한 설명을 듣고 완벽히 이해할 수 있었다..!
|
위의 예시를 통해 그룹핑이 우선일 때 WHERE절을 쓸 수 없으므로 WHERE은 HAVING을 대체할 수 없다는 것을 알았고, 반대로 WHERE들어갈 자리에 HAVING 넣어도 실행은 되지만, 우리는 약속으로 HAVING 뒤에 집계함수를 적기로 하였으므로 WHERE자리엔 WHERE로 적어야 함을 알았다.
'SQL' 카테고리의 다른 글
[1203 TIL] -2 데이터분석 조별과제 쿼리짜기 (0) | 2024.12.03 |
---|---|
[1202 TIL] sql 코드카타(like,substr,when) (0) | 2024.12.02 |
[1129 TIL] (2) | 2024.11.29 |
[1127 TIL] SQL 작성 시 명명 규칙과 주석 처리 방법, null값의 의미, 조건연산자 필터링 (0) | 2024.11.27 |
[1126 TIL] - SQL 코드카타(null) (0) | 2024.11.26 |