묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨초보자를 위한 BigQuery(SQL) 입문
오류
다음과 같이 실행했는데 오류가 뜨는데, 이유가 무엇일까요? SELECT * IF(speed >= 70, "빠름", "느림") AS Speed_Category FROM `inflearn-bigquery-practice.basic.pokemon` Syntax error: Expected end of input but got keyword IF at [3:3]
-
해결됨초보자를 위한 BigQuery(SQL) 입문
총 정리 문제 풀이 5번에 관해 질문
안녕하세요.총 정리 문제 풀이 5번의 선생님의 쿼리와, 해설을 보기 전에 개인적으로 써본 쿼리의 각각의 결과가 달라 어디서 오류를 범했는지 알고 싶어 질문합니다. 선생님께서 쓰신 쿼리는 다음과 같았습니다.WITH에서 먼저 trainer_pokemon과 pokemon을 JOIN한 후, 마지막에 trainer를 JOIN하셨습니다.결과는 Kyle의 포켓몬 공격력+방어력 총합 1951였습니다.WITH total_stats AS ( SELECT tp.trainer_id, SUM(p.attack + p.defense) AS total_stat, FROM basic.trainer_pokemon AS tp LEFT JOIN basic.pokemon AS p ON tp.pokemon_id = p.id GROUP BY tp.trainer_id ) SELECT t.name, ts.trainer_id, ts.total_stat FROM total_stats AS ts LEFT JOIN basic.trainer AS t ON ts.trainer_id = t.id ORDER BY total_stat DESC LIMIT 1 그리고 저는 다음과 같이 썼습니다.선생님의 순서와 다르게, WITH에서 먼저 trainer_pokemon과 trainer를 JOIN한 후, 마지막에 pokemon을 JOIN했습니다.결과는 Kyle의 포켓몬 공격력+방어력 총합 1856였습니다.WITH pokemon_cnt_table AS( SELECT t.id, t.name, tp.pokemon_id, COUNT(tp.id) AS pokemon_cnt, FROM `basic.trainer_pokemon` AS tp LEFT JOIN `basic.trainer` AS t ON tp.trainer_id = t.id GROUP BY t.id, t.name, tp.pokemon_id ) SELECT pct.id, pct.name, SUM(attack) AS attack_sum, SUM(defense) AS defense_sum, SUM(attack + defense) AS a_plus_d_sum, FROM pokemon_cnt_table AS pct LEFT JOIN `basic.pokemon` AS p ON pct.pokemon_id = p.id GROUP BY pct.id, pct.name ORDER BY a_plus_d_sum DESC LIMIT 1 결과가 달라진 이유에 대해, 제 나름대로 생각해 본 것은, JOIN의 순서가 달라 WITH 내의 1) SELECT, 2) FROM ON의 키도 다른 점이 출력 데이터에 영향을 준 것이 아닐까 하는 것입니다. JOIN의 순서 차이로 결과가 달라질 수 있을까요?제가 작성한 쿼리의 오류에 대한 확인이 번거로우시다면, 결과에 대한 JOIN 순서 차이의 영향 유무에 대해서만 답해 주셔도 감사하겠습니다. 미리 감사합니다.
-
해결됨SQL 시작도 못한 분들 드루와요
빅쿼리 테이블 만들기 오류
안녕하세요. 현재 sql 강좌 수강 중에 빅쿼리 테이블 만들기가 오류가 떠서 질문드립니다.업로드 할 csv 파일은 압축풀고 여러번 업로드 했으나 충돌이 많이 된다고 테이블 생성이 되지 않습니다.csv 파일 자체에 들어가보니, max os ~ 라고 되어 있던데 저는 윈도우 사용자인데 이때 어떻게 오류 해결 해야 하나요? ** 에러 메세지와 이미지 캡쳐본>> Error while reading data, error message: CSV processing encountered too many errors, giving up. Rows: 0; errors: 1; max bad: 0; error percent: 0
-
해결됨초보자를 위한 BigQuery(SQL) 입문
4-7. 조건문 연습 문제 5번에 관한 질문
안녕하세요.조건문 연습 문제 5번의 선생님께서 쓰신 정답에 관해 질문입니다.select 안에, 포획 날짜를 표시하기 위해 원래 basic.trainer_pokemon 안에 존재하는 catch_datetime을 쓰셨는데, Asia/Seoul 시간대로 변경되지 않은 상태를 그대로 쓰신 이유가 있을까요?SELECT id, trainer_id, pokemon_id, catch_datetime, IF (DATE(catch_datetime, "Asia/Seoul") > "2023-01-01", "Recent", "Old") as recent_or_old FROM `basic.trainer_pokemon` if 함수 내에서 수정한 날짜를 보여주기 위해, 똑같이 수정한 날짜를 썼는데, 문제 없을까요?SELECT id, trainer_id, pokemon_id, DATE(catch_datetime, "Asia/Seoul") as corrected_catch_date, IF (DATE(catch_datetime, "Asia/Seoul") > "2023-01-01", "Recent", "Old") as recent_or_old FROM `basic.trainer_pokemon` 미리 감사합니다.
-
해결됨초보자를 위한 BigQuery(SQL) 입문
4-5. 연습 문제 1번의 정답에 관해 질문
안녕하세요, 4-5. 연습 문제 1번(#트레이너가 포켓몬을 포획한 날짜(catch_date)를 기준으로, 2023년 1월에 포획한 포켓몬의 수를 계산해 주세요.)의 정답을 보고 의문이 있어 질문 올립니다. 선생님께선 아래와 같이 쿼리를 작성해 주셨는데요. count 함수의 변수, id는 처음부터 고유한 번호인데 distinct를 걸어주신 이유를 알고 싶습니다. (count 결과는 85)select count(distinct id) as cnt from `basic.trainer_pokemon` where extract (year from datetime(catch_datetime, "Asia/Seoul")) = 2023 and extract (month from datetime(catch_datetime, "Asia/Seoul")) = 1 실험적으로, trainer_id를 변수로 쓴 것과, distinct를 걸어서 trainer_id를 변수로 쓴 것의 결과를 확인해 보니, 각각 85, 48이었습니다.select count(trainer_id) as cnt, count(distinct trainer_id) as distinct_cnt from `basic.trainer_pokemon` where extract (year from datetime(catch_datetime, "Asia/Seoul")) = 2023 and extract (month from datetime(catch_datetime, "Asia/Seoul")) = 1 1명의 트레이너가 2023년 1월에 2마리 이상의 포켓몬을 포획하는 경우도 있을 수 있으니, distinct를 걸어버리면, 1월에 여러 번 포획한 횟수가 1회로 줄어버리지 않을까 생각되는데, 잘못된 곳이 있다면 짚어주셨으면 합니다. 미리 감사합니다.
-
해결됨초보자를 위한 BigQuery(SQL) 입문
as 명명, count 함수 내 변수 선택에 관한 질문
안녕하세요.as로 명명하는 것에 관해 질문드립니다."2-5. 집계(GROUP BY + HAVING + SUM/COUNT)"에서 선생님께선 다음과 같이 쿼리를 작성해주셨는데요.select type1, count(id) as cnt from `basic.pokemon` group by type1 having cnt >= 10 order by cnt desccount(id)를 cnt로 명명한 후, having과 order by에서 그 별명을 이용하여 간단히 입력하신 걸 이해했습니다. 여기서 sql에 익숙해지고자, 여러 시험을 해보았는데, 다음과 같은 쿼리도 같은 결과를 출력할 수 있었습니다.select type1, count(type1) as cnt from `basic.pokemon` group by type1 having count(id) >= 10 order by count(kor_name) descselect 내의 count 괄호 내에는 type1 열을 불러 읽고,having 내의 count 괄호 내에는 id 열을 불러 읽고,order by 내의 count 괄호 내에는 kor_name 열을 불러 읽고, as로 select 내의 count 함수를 따로 명명해주었지만 그 별명을 사용하지는 않았습니다.즉, 각 count 함수의 변수를 모두 전혀 다른 것들을 불러 읽는 엉망진창(...)으로 만들어 보았는데요. 그럼에도 불구하고, 문제 없이 같은 결과가 출력된다는 것은, as는 입력 간편화를 위해 이용하는 것이니, 명명을 하더라도 이용하지 않아도 출력상 문제는 없다고 이해해도 될까요? 그리고 count 내 변수를 랜덤하게 지정해도 같은 결과가 나옴에도 불구하고, id 열을 변수로 쓰는 이유는, 실무에서는 값이 누락되어 있을 가능성이 있을 열이 아닌, 하나의 row마다 반드시 값이 주어지는 열(=id 열)을 쓰는 것이 잘못된 집계를 피하기 위함이라고 이해해도 될까요? 글이 길어졌지만, 답변을 기다립니다.미리 감사합니다.
-
해결됨초보자를 위한 BigQuery(SQL) 입문
쿼리 환경설정 오류
안녕하세요!SELECT(들여쓰기)*FROM 'basic.pokemon'ORDER BY id 와 같이 쿼리를 작성하였는데, 저런 오류가 나는 이유가 무엇일까요...?
-
해결됨초보자를 위한 BigQuery(SQL) 입문
Espanso 설치시 지속적으로 에러가 나서 문의드립니다.
안녕하세요! Espanso 를 윈도우 버전으로 다운로드해서 설치하려고하는데 지속적으로 하기 에러가 나고있습니다. 혹시 제가 뭔가 잘못설치한건지 확인 한번 부탁드립니다!
-
해결됨초보자를 위한 BigQuery(SQL) 입문
WITH 구문
1. WITH 사용하지 않고 FROM으로 묶은 후 쿼리 작성 이어나가기2. WITH 사용하기안녕하세요. 위의 두 경우 모두 쿼리 결과는 동일하게 나오는데, WITH를 사용하는 정확한 이유가 오로지 가독성을 위한 것인지, 용량에도 차이가 생기는 것인지 궁금해 질문드립니다.(개인적으로는 문제를 풀 때 바로 묶는 것이 더 편하기 때문에 여쭤봅니다.!)
-
해결됨초보자를 위한 BigQuery(SQL) 입문
JOIN 연습문제 5번 문제 관련해서 질문이 있습니다!
안녕하세요! 좋은 강의 감사드립니다. 도움이 많이 되고 있어요.5번 문제 관련해서 질문이 있습니다. 5번 문제에 대해서 저는 쿼리를 이렇게 작성했습니다.SELECT generation, COUNT(tp.id) AS pokemon_cnt FROM ( SELECT id, trainer_id, pokemon_id, status FROM `basic.trainer-pokemon` ) AS tp LEFT JOIN basic.trainer AS t ON tp.trainer_id = t.id LEFT JOIN basic.pokemon AS p ON tp.pokemon_id = p.id WHERE t.hometown = 'Incheon' AND tp.status IN ('Active', 'Training') GROUP BY generation ORDER BY pokemon_cnt DESC강의에서 카일님과 다른 부분은 WHERE 절에 AND 가 더 추가된 부분이에요.문제에서 '보유하고 있나요?' 라고 물어서 저는 저 조건을 추가해줬는데 카일님은 추가해주시지 않았는데도 제 쿼리와 결과가 같게 나오더라구요.우연히 인천에 있는 트레이너들의 status가 다 Active, Training 이어서 이렇게 된 것인지 아니면 저 조건이 필요가 없는 것인지 궁금합니당!
-
해결됨초보자를 위한 BigQuery(SQL) 입문
5-6 의 Join 문제 2 해설이 일부 이해가 되지 않습니다
안녕하세요. 5-6 JOIN 연습문제 2번 중, 18:30 쯤에서 group by type1 을 하셨는데 여기 group by pokemon_Cnt (= tp.id) 여야 하지 않는지요?
-
해결됨초보자를 위한 BigQuery(SQL) 입문
4-5 연습문제 4번
안녕하세요. 4-5 연습문제 4번 서브쿼리 부분에서 질문이 있습니다. 서브쿼리에 꼭 * 이나 id를 써줘야 실행이 되는 이유는 무엇인가요??처음에는 서브쿼리>select에서 카일님 풀이처럼 *를 안 해주고 실행했더니 Unrecognized name: id라는 오류가 떴습니다. 구글링을 통해 알아보니, 서브쿼리에 id를 안 썼는데 바깥에 COUNT(DISTINCT id) as battle_cnt 를 써줘서 오류가 떴다고 했습니다. 왜 써줘야 하는지 알 수 있을까요??
-
해결됨초보자를 위한 BigQuery(SQL) 입문
battle 파일 표시할 데이터가 없습니다 문제
안녕하세요 좋은 강의 잘 듣고 있습니다. battle 파일 실행 중 문제가 있어 질문 드립니다.google cloud에서 battle파일을 열면 스키마는 나오는데 미리보기가 안됩니다. '표시할 데ㅌ이터가 없습니다'라고 메시지가 뜹니다.쿼리를 날려도 데이터가 없는 건지 결과가 안 나옵니다.다른 파일은 다 멀쩡합니다. 파일탐색기에서 battle.csv 열어도 데이터가 잘 있습니다.혹시 문제에 대해 알고 계신 게 있으신가요?감사합니다.
-
해결됨초보자를 위한 BigQuery(SQL) 입문
sql 실행순서와 서브쿼리 사용이유
SQL 공부하다가 궁금한점이 생겼어요!실행순서는 group by가 select 보다 먼저 실행되는 것으로 알고 있는데select절에서 설정한 별칭을 왜 group by절에서 사용해도 되는걸까요?현업에서는 팀마다 다르겠지만, 보통 어떻게 사용하시나요?그리고 만약에 안된다면, 서브쿼리를 사용하시나요?서브 쿼리를 사용하는 이유는 정확히 무엇인가요? 그리고 현업에서도 서브쿼리를 많이 사용하는지 궁금합니다!(아직 서브쿼리가 정확히 왜 필요한지 모르겠어요. 자바스크립트의 클로저라는 개념과 비슷한 개념일까요?)마지막으로 아래 쿼리가 결과는 똑같은데 어떤게 더 바람직한 작성 방법일까요?(해당 강의는 4-6. 조건문(CASE WHEN, IF)입니다)감사합니다 :)SELECT new_type1, COUNT(DISTINCT id) AS cnt FROM( SELECT *, CASE WHEN type1 IN ('Rock', 'Ground') OR type2 IN ('Rock', 'Ground') THEN 'Rock&Ground' ELSE type1 END AS new_type1, FROM `basic.pokemon` ) GROUP BY new_type1SELECT CASE WHEN type1 IN ('Rock', 'Ground') OR type2 IN ('Rock', 'Ground') THEN 'Rock&Ground' ELSE type1 END AS new_type1, COUNT(DISTINCT id) AS cnt FROM `basic.pokemon` GROUP BY new_type1
-
해결됨초보자를 위한 BigQuery(SQL) 입문
코드 에디터가 이상한데, 어떤 설정을 건드려야할지 모르겠어요.
글자가 겹쳐 써지거나, SELECT를 썼을 때 위처럼 파란색이 나타나지 않는 경우가 있어요.그리고 드래그를 해도 파란색으로 보이지가 않아요. 제가 실수로 어떤 설정을 건드렸을까요?혹은 제 노트북 내 잘못 설정한 것인지 문제를 발견하기 어려워요.도와주실 수 있으실까요?
-
해결됨초보자를 위한 BigQuery(SQL) 입문
4-5. 시간 데이터 연습 문제 2번 문제 관련
강의 관련해서 제가 조금 이해가 어려운 부분이 있는데 도와주실 수 있나요?(위의 이미지는 강의 영상을 캡쳐한 것입니다)2번 문제가 '오전 6시에서 오후 6시 사이에 일어난 배틀의 수를 계산해주세요' 입니다.그런데 EXTRACT(HOUR FROM battle_datetime) <= 18 을 해보면 빨간색 네모 상자에 표시해둔 것처럼18:53분 즉, 오후 6시를 넘어서 나온 시간까지 데이터에 잡히는데요!이럴 때는 어떻게 하면 좋을까요? 그냥 EXTRACT(HOUR FROM battle_datetime) < 18이 나을까요? (그런데 그러면 딱 정확히 18:00에 배틀이 이루어진 순간은 포함되지 않아서 고민이네요)
-
해결됨초보자를 위한 BigQuery(SQL) 입문
battle 테이블 형성할 때 제가 어떤 실수를 했을까요?
안녕하세요! 카일스쿨님!battle 테이블을 영상 그대로 만들었는데도, 계속 battle 테이블에 관한 데이터에 관한 정보를 볼 수가 없어요!빠진것 없이 최대한 꼼꼼히 다시 체크했는데도 모르겠습니다.혹시 제가 어떤 실수를 했을지 도와주실 수 있나요?아래는 스키마 정보와, 제가 테이블 만들때 과정을 이미지로 첨부했습니다.감사합니다.
-
해결됨초보자를 위한 BigQuery(SQL) 입문
5-6 JOIN 연습문제 6번
수업을 들으며 항상 감사한 마음으로강의 잘 듣고 있습니다. 5-6번 JOIN 연습문제 5번까지 풀이가 있고,6번은 없었습니다ㅠㅠ 어디서 확인 할 수 있을까요? 답변 부탁드립니다!(문제)각 배틀에서 참가한 두 플레이어의 이름과 승자의 이름을 출력해 주세요.
-
해결됨초보자를 위한 BigQuery(SQL) 입문
쿼리 생산성 도구 에러
안녕하세요! 덕분에 강의 잘 듣고 있습니다. 감사합니다. espanso까지 설치하고, 윈도우라 메모장으로 열어서 템플릿을 입력하고 저장을 하면 첨부된 이미지와 같이 에러가 뜹니다. 이럴 경우, 뭐가 문제인가요? 답변 부탁드립니다!
-
해결됨초보자를 위한 BigQuery(SQL) 입문
쿼리 작성 템플릿과 생산성 도구 사용
espanso 설치까지 했습니다. 이후 터미널에서 쿼리를 작성하라는게 무슨 뜻인지 잘모르겠어요.터미널에서 espanso edit을 입력하면 메모장이 켜지네요 ㅠㅠ