[구글시트활용 SQL쿼리_대시보드제작]_2_ 구글시트에서 query함수로 데이터 추출하기 (셀값 & 텍스트 & 함수 등을 연결하여, 수치값 입력시 바로 출력 데이터추출 쿼리문 작성)

Hyejin Beck·2024년 2월 25일
0

Excel & Sheet

목록 보기
20/22
post-thumbnail

& 를 활용하여 연결할 수 있습니다.

문제1

문제2

  1. 종로구 - 사직동의 5~9세 "계" 값을 불러오세요.
=query(A151:G156, "SELECT G WHERE C = '사직동' AND D = '계'")
# header 미포함 범위에는 굳이 표기 X 
# header 포함 범위에는 0을 마지막에 표기

또는

=query($A$150:$G$156, "SELECT G WHERE B = '"&A165&"' AND C = '"&B165&"' AND D = '계'", 0)
  1. 중구 - 신당동의 5~9세 "계"를 불러오세요.
=query(A150:G156, "SELECT G WHERE C = '신당동' and D = '계'", 0)

또는 

=query($A$150:$G$156, "SELECT G WHERE B = '"&A166&"' AND C = '"&B166&"' AND D = '계'", 0)

문제3

위의 데이터를 불러와, 백분율 %로 변환하여 통계를 구해보겠습니다.

행정동 먼저 출력

# 순서1 : 행정동이 있는 C열 추출 
SELECT C 

# 순서2 : header 에 속하는 동, 합계, 소계 제외하고 추출 
WHERE C != '동' and C != '합계' and C != '소계'

# 순서3 : 중복값 제거 
unique(로 씌워주기) 

# 최종값 
=unique(query('인구통계'!C:C, "SELECT C WHERE C != '동' and C != '합계' and C != '소계'"))

자치구 불러오기

행정동에 맞게 자치구 XLOOKUP으로 불러오기

=XLOOKUP( 기준값, 기준값범위, 찾는값범위 )


=XLOOKUP($B3, '인구통계'!$C:$C, '인구통계'!$B:$B)

해당 자치동 총계의 백분율

일단 종로구 사직동의 0~4세의 전체대비비율을 구해보겠습니다.

사직동의 0~4세 계 / 사직동의 모든연령 계 = 사직동의 0~4세의 전체대비비율

사직동의 0~4세 계

=query(범위, "쿼리문" , 헤더여부 미포함시0 포함시-1)

# 순서1 : 형태 잡기 
=QUERY( 전체범위, "select 0~4세 WHERE 자치구 = 종로구 and 동 = 사직동 and 구분='계'", 헤더미포함)

# 순서2 : 정리하기 
=QUERY( 전체범위, "select F열 WHERE B열 = '종로구' and C열 = '사직동' and D열='계'", 0)

# 순서3 : 불러오기 
=QUERY( '인구통계'!1:1357, "select F WHERE B = '종로구' and C = '사직동' and D='계'", 0)

사직동의 모든연령 계


# 순서1 : 형태 잡기 
=QUERY( 전체범위, "select 계E열 WHERE 자치구B열 = 종로구 and 동C열 = 사직동 and 구분D열 ='계'", 헤더미포함)

# 순서2 : 정리하기
=QUERY( 전체범위, "select E WHERE B = '종로구' and C = '사직동' and D ='계'", 헤더미포함)

# 순서3 : 불러오기 
=QUERY( '인구통계'!1:1357, "select E WHERE B = '종로구' and C = '사직동' and D='계'", 0)

사직동 0~4세 / 모든연령

# 순서1 : / 로 계산 해주기 
=QUERY( '인구통계'!1:1357, "select F WHERE B = '종로구' and C = '사직동' and D='계'", 0)/QUERY( '인구통계'!1:1357, "select E WHERE B = '종로구' and C = '사직동' and D='계'", 0)

# 순서2 : 숫자를 퍼센트로 바꿔주기 

# 순서3 : 범위는 $고$정으로 해주기 
=QUERY( '인구통계'!$1:$1357, "select F WHERE B = '종로구' and C = '사직동' and D='계'", 0)/QUERY( '인구통계'!$1:$1357, "select E WHERE B = '종로구' and C = '사직동' and D='계'", 0)

# 순서4 : '텍스트값'을 '셀값'으로 바꿔주기 
# 기존 : '텍스트' 
# 변경 : '"로 기존 쿼리문 끝마친뒤 &로 연결하고 셀값 &로 재연결하고 다시 쿼리문 시작 "'
# 참고로 '텍스트' --> '"&셀값&"' 
=QUERY( '인구통계'!$1:$1357, "select "&C1&" WHERE B = '"&A3&"' and C = '"&B3&"' and D='계'", 0)/QUERY( '인구통계'!$1:$1357, "select E WHERE B = '"&A3&"' and C = '"&B3&"' and D='계'", 0)

# 최종 : 옆 칸으로 이동할수있게 $고정값 
=QUERY( '인구통계'!$1:$1357, "select "&C$1&" WHERE B = '"&$A3&"' and C = '"&$B3&"' and D='계'", 0)/QUERY( '인구통계'!$1:$1357, "select E WHERE B = '"&$A3&"' and C = '"&$B3&"' and D='계'", 0)

과제

문제1.

PSG 팀 선수들을 모두 불러오세요.

=QUERY(B4:G13, "SELECT * WHERE C = 'PSG' ")

문제2.

Madrid 팀 선수들 중에서 10골 이상 넣은 선수들의 이름/팀/골 수/어시 수를 불러오세요.

=query(B4:G13, "SELECT B, C, D, E WHERE C = 'Madrid' AND D >= 10")

문제3.

PSG 팀 선수들 중에서 10골 이상 넣고, 어시스트도 10골 이상인 선수들의 이름/팀/골 수/ 어시 수를 불러오세요.

=QUERY(B4:G13, "SELECT B,C,D,E WHERE C = 'PSG' AND D >=10 AND E >=10")

문제4. date''

Madrid 팀 선수들 중에서 2020년 1월 1일 이후 계약을 한 선수들의 이름/팀/계약일을 불러오세요.

=QUERY(B4:G13, "SELECT B,C,D,E WHERE C ='Madrid' AND G >= DATE'2020-01-01'")

문제5. 변동값

골 수와 어시스트 수를 n값으로 입력하면 해당되는 데이터를 불러오는 쿼리를 작성하겠습니다.

  • Soccer Table 활용하여 GOAL과 ASSIST 숫자가 바뀜에 따라 출력하는 쿼리문을 작성하여라.
    1) Select * 사용
    2) Where 조건에 푸른색값과 초록색값을 집어 넣어, 푸른색값 혹은 초록색값 값이 변함에 따라 다르게 출력하는 쿼리문을 작성 하여라.(where 조건은 부등호 이상 혹은 초과(> or >=)을 사용하세요.
# {골 수} 이상 {어시스트 수} 이상 넣은 선수들의 모든 데이터를 불러오겠습니다.
# =QUERY(B5:G13, "SELECT * WHERE D >= 20 AND E >= 10")
# =QUERY($B$5:$G$13, "SELECT * WHERE D >= "&셀위치&" AND E >= "&셀위치&")


=QUERY($B$5:$G$13, "SELECT * WHERE D >= "&C48&" AND E >= "&C49&"")



이제 저 위의 푸른색값과 초록색값을 임의로 변동을 주면,
그에 해당하는 데이터값 대로 출력됩니다.
신기합니다.

profile
데이터기반 스토리텔링을 통해 인사이트를 얻습니다.

0개의 댓글