내일배움캠프_데이터분석_2기/TIL

[TIL] camp_day8_240424

단ee 2024. 4. 24. 21:12

2주차 세 번째 날. 오늘은 SQL 세션 마지막이었고, 데이터 리터러시 관련된 강의를 수강했다.

학습 내용


  • UNION

    • 여러 개의 SELECT 문의 결과를 하나의 테이블로 연결하여 보고 싶을 때 사용.
    • 아래로 가로 행을 추가하여 테이블끼리 수직 결합을 수행할 때 사용한다.
    • 열의 갯수와 순서가 모든 쿼리에서 동일하고, 데이터 형식이 일치해야 한다.
  • DATEDIFF

      SQL
      DATEDIFF(expr1, expr2)  -- expr1, expr2 는 모두 날짜 데이터 형식이어야 하고, expr1 날짜에서 expr2를 뺀다.
    • 전에 코테 풀면서 공부했던 함수였는데, 작동 범위를 거꾸로 기억하고 있었어서 쿼리문이 틀렸었다. 이 부분만 고치니까 해결됨.

고찰 & 기타


  • 함수를 쓸 때는 꼭 범위를 확인하자...
  • 어제 과제를 풀면서 내가 제출한 쿼리가 정말로 같은 값을 출력하는지(=동일한 기능을 하는지) 궁금해서 비교하는 쿼리를 어찌어찌 작성했다. 제대로 기능하는 것 같아 다행. 이 쿼리문 작성하면서 썼던 논리구조로 그동안 계속 막혔던 SQL 코테 한 문제 해결했다!
      SQL
       -- 949 개의 date 결과가 존재한다! 전부 일치함!
      SELECT sum(a.compare)
      FROM
          (
              SELECT q2.`date`
              ,q2.num_id AS '문제 2번 id 수'
              ,q3.num_id AS '문제 3번 id 수'
              , CASE WHEN q2.num_id = q3.num_id THEN '1' 
              -- 동일한 행은 전부 1로 출력하므로, 전체 크기인 949와 비교하면 동일하지 않은 행의 수를 알 수 있다.
              ELSE 0 END AS compare
              FROM
                  (
                  SELECT `date`
                  ,count(distinct game_actor_id) AS num_id
                  FROM users
                  GROUP BY `date`
                  HAVING count(distinct game_actor_id) > 10 
                  ) AS q2
              LEFT JOIN 
                  (
                  SELECT `date`
                  ,num_id
                  FROM 
                      (SELECT `date` 
                      ,count(DISTINCT game_actor_id) AS num_id
                          FROM users
                          GROUP BY `date`) AS u
                  WHERE u.num_id > 10
                  ) AS q3
              ON q2.`date` = q3.`date`
          ) AS a ;
        ```

'내일배움캠프_데이터분석_2기 > TIL' 카테고리의 다른 글

[TIL] camp_day10_240426  (0) 2024.04.26
[TIL] camp_day9_240425  (1) 2024.04.25
[TIL] camp_day7_240423  (0) 2024.04.23
[TIL] camp_day6_240422  (1) 2024.04.22
[TIL] camp_day5_240418  (0) 2024.04.19