inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

강의순서

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

자주활용되는 판다스 예제 듣고 시계열듣는건가요? 아니면 작업형 듣는건가요

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
권종오 댓글 2 좋아요 0 조회수 150

m_redirect_url에 대해 문의 드립니다.

미해결

파이썬/장고로 결제 시작하기 (Feat. 아임포트) - 기본편

영상이 이해가 잘 안되 몇번을 돌려봤습니다. 제가 이해하고 있는게 맞는지 알고 싶어 문의 드립니다. 모바일에서는 콜백함수의 동작이 되지 않기 때문에, m_redirect_url 인자에 url 정보를 정의하면, 결제 페이지 이동 후, 자동으로 정의된 페이지로 이동이 된다 check_url에 의해 order.p k, payment.p k 인자 정보를 받기 때문에 order_check은 별도의 추가 코드 없이 pc와 모바일에서 동일한 동작을 보장받을 수 있다. 제가 이해하는게 맞는지 알고 싶습니다.

  • python
  • django
bluebamus 댓글 1 좋아요 0 조회수 171

cancle에 대해 문의 드립니다.

미해결

파이썬/장고로 결제 시작하기 (Feat. 아임포트) - 기본편

코드의 내용을 보자면 admin에서 action을 이용해 여러개의 쿼리셑을 받아 각각을 한번씩 처리합니다. @admin.display(description=f"지정 주문결제를 취소합니다.") def make_cancel(self, request, queryset): for order in queryset: order.cancel("관리자가 주문결제를 취소했습니다.") self.message_user(request, f"{queryset.count()}개의 주문결제를 취소했습니다.") 그런데 Order의 cancel()에서 orderpayment_set, 즉 manytomany 중계 테이블내 모든 관련한 결제 내역을 가져와 cancel을 시도합니다. 결제 가능 여부를 확인하는 코드에서 보자면 def can_pay(self) -> bool: return self.status in (self.Status.REQUESTED, self.Status.FAILED_PAYMENT) 두 가지 조건만 있습니다. 실패했거나, 성공한 경우 입니다. 때문에 DB에는 관련한 주문이 여러간의 실패 + 1건의 성공의 이력인데 굳이 모든 이력을 가져와 cancel을 하는 이유가 무엇인지 알고 싶습니다.

  • python
  • django
bluebamus 댓글 3 좋아요 0 조회수 341

구버전 영상 학습해야 하나요?

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

구버전 영상도 학습해야 하나요?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
wsyang 댓글 2 좋아요 0 조회수 155

선생님 교재요...

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

섹션 뒤로 갈 수록 좀 많이 심화인거 같은데... 28~35정도가 심화라고 생각하면 될까요? 저번에 1유형에서 0점이어서 지금부터 하고 있는데 자신감이 너무 떨어져요..ㅋㅋ ㅠㅠㅠ

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
moonwrd 댓글 3 좋아요 0 조회수 209

결측치가 포함된 object 컬럼의 레이블 인코딩

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

2025 시나공 빅데이터 분석기사 실기 교재를 가지고 공부하고 있습니다. p.245 / 04.데이터 전처리 / 레이블 인코딩 관련 문의입니다. 결측치를 가지는 object 컬럼의 경우 레이블 인코딩을 하는 경우 "결측치"를 하나의 값으로 분류하는 거 같습니다. 이러한 경우 레이블 인코딩 후 결측치가 존재하지 않는 것으로 결과가 나옵니다. 문의) 결측치를 포함한 object 타입의 컬럼의 경우 결측치 변환 후 레이블 인코딩을 진행하는 게 맞는지? 결측치와 관계없이 레이블 인코딩을 진행하는 게 맞는지? 문의드립니다.

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
안형렬 댓글 2 좋아요 0 조회수 111

12_논리적인 모델링(독립형,상속형PK)에서 질문드립니다.

해결됨

[7일완성]생각하는 데이터베이스모델링

안녕하세요! 강의에서 수강취소의 경우 수강번호(AK)를 WHERE절로 삭제한다고 말씀하신 부분에 추가적으로 궁금한게 있어서 질문드립니다. 예를들어 수강취소를 한다고 할 때 수강 테이블에 DEL_YN이라는 컬럼이 있고 삭제의 경우 delete가 아닌 DEL_YN을 N에서 Y로 update한다면, 학생코드/과목코드/DEL_YN이 1/1/Y인 레코드가 여러개 있을 수 있고 1/1/N인 레코드는 하나만 존재해야할 것 같습니다. 제가 생각하는 방법이 정상적인 방법인지도 궁금하고, 또 이 경우에는 학생코드, 과목코드, DEL_YN=N 이렇게 3개를 묶어서 PK를 해야하는지 그리고 수강취소 예시에서 delete가 아닌 DEL_YN같은 값을 update해야한다면 보통 어떤식으로 제약조건을 추가하는지 말씀 부탁드립니다. 감사합니다.

  • sql
  • dbms/rdbms
  • ERD
  • backend
맛땅 댓글 2 좋아요 0 조회수 248

df.drop 문의

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

df = df.drop(cols,axis = 1) cols 변수가 예시에서는 [,]의 시리즈 형태인 것 같은데 그럼 만약 age 열을 삭제하기 위해서 시리즈 형태로 만들어서 df.drop(['age']) 로 하면 왜 안되는건가요?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
wsyang 댓글 2 좋아요 0 조회수 92

df.drop으로 열 바로 삭제 문의

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

여기서 age 열을 바로 삭제하려면 어떻게 코딩하나요? df.drop('age') ..?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
wsyang 댓글 2 좋아요 0 조회수 108

map 적용 의미

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

map을 적용한다는 것이 어떤 의미인가요?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
wsyang 댓글 2 좋아요 0 조회수 91

sass 오류

해결됨

풀스택 리액트 토이프로젝트 - REST, GraphQL (for FE개발자)

sass css가 오류나서 sass대신 tailwind css 사용해도 수업 따라가는데 지장 없을까요?

  • react
  • rest-api
  • graphql
이민재 댓글 1 좋아요 0 조회수 195

import numpy as np 의 뜻

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

import numpy as np 의 의미가 무엇인가요? 풀어서 설명 부탁드립니다.

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
wsyang 댓글 2 좋아요 0 조회수 868

에러 메시지 문의

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

133 <ipython-input-75-22be5135b79e>:17: FutureWarning: Downcasting behavior in `replace` is deprecated and will be removed in a future version. To retain the old behavior, explicitly call `result.infer_objects(copy=False)`. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)` df['f3'] = df['f3'].replace('vip',3) 133 정답 아래 이것이 어떤 에러 메시지인가요?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
wsyang 댓글 2 좋아요 0 조회수 306

DBeaver 오라클 연결시 ORA-01017 에러

미해결

실습으로 손에 잡히는 SQLD(2과목)

connect to a database 창에서 최초로 연결하려고 하는데 ORA-01017가 뜹니다 몇번이고 맞게 적어도 그렇습니다 왜이럴까요..?! ㅠ ㅠ 그런데 오라클만 이렇게 뜨고 sql server은 잘 연결되어 테이블까지 잘 불러와집니다.. +아무리 시도해도 오라클은 연결이 안되고 sql server만 연결되는데 앞으로 실습할 때 sql server에서 실습해도 괜찮을까요? 추후에 문제가 있을까요??

  • sql
  • oracle
  • mssql
  • SQLD
서재덕 댓글 2 좋아요 0 조회수 790

context 리스트 검색 안됨

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

// App.jsx import "./App.css"; import { useState, useRef, useReducer, useCallback, createContext, } from "react"; import Header from "./components/Header"; import Editor from "./components/Editor"; import List from "./components/List"; const mockData = [ { id: 0, isDone: false, content: "React 공부하기", date: new Date().getTime(), }, { id: 1, isDone: false, content: "빨래하기", date: new Date().getTime(), }, { id: 2, isDone: false, content: "노래 연습하기", date: new Date().getTime(), }, ]; function reducer(state, action) { switch (action.type) { case "CREATE": return [action.data, ...state]; case "UPDATE": return state.map((item) => item.id === action.targetId ? { ...item, isDone: !item.isDone } : item ); case "DELETE": return state.filter((item) => item.id !== action.targetId); default: return state; } } export const TodoContext = createContext(); function App() { const [todos, dispatch] = useReducer(reducer, mockData); const idRef = useRef(3); const onCreate = useCallback((content) => { dispatch({ type: "CREATE", data: { id: idRef.current++, isDone: false, content: content, date: new Date().getTime(), }, }); }, []); const onUpdate = useCallback((targetId) => { dispatch({ type: "UPDATE", targetId: targetId, }); }, []); const onDelete = useCallback((targetId) => { dispatch({ type: "DELETE", targetId: targetId, }); }, []); return ( <div className="App"> <Header /> <TodoContext.Provider value={{ todos, onCreate, onUpdate, onDelete }}> <Editor /> <List /> </TodoContext.Provider> </div> ); } export default App; // List.jsx import "./List.css"; import TodoItem from "./TodoItem"; import { useState, useMemo, useContext } from "react"; import { TodoContext } from "../App"; const List = () => { const { todos } = useContext(TodoContext); const [search, setSearch] = useState(""); const onChangeSearch = (e) => { setSearch(e.target.value); }; const getFilteredData = () => { if (search === "") { return todos; } return todos.filter((todo) => todo.content.toLowerCaes().includes(search.toLowerCase()) ); }; const filteredTodos = getFilteredData(); const { totalCount, doneCount, notDoneCount } = useMemo(() => { const totalCount = todos.length; const doneCount = todos.filter((todo) => todo.isDone).length; const notDoneCount = totalCount - doneCount; return { totalCount, doneCount, notDoneCount, }; }, [todos]); return ( <div className="List"> <h4>Todo List 🎯</h4> <div> <div>total: {totalCount}</div> <div>done: {doneCount}</div> <div>notDone: {notDoneCount}</div> </div> <input value={search} onChange={onChangeSearch} placeholder="검색어를 입력하세요" /> <div className="todos_wrapper"> {filteredTodos.map((todo) => { // return <div>{todo.content}</div>; return <TodoItem key={todo.id} {...todo} />; })} </div> </div> ); }; export default List; 안녕하세요. 11-2강을 수강하며 코드를 따라 작성하였는데 리스트 검색을 하려고 하면 빈 창으로 바뀝니다. 리스트 추가와 삭제는 잘 작동합니다. 무엇이 문제일까요? 미리 답변 감사합니다 🙇🏻‍♀️ 🚨 아래의 가이드라인을 꼭 읽고 질문을 올려주시기 바랍니다 🚨 질문 하시기 전에 꼭 확인해주세요 - 질문 전 구글에 먼저 검색해보세요 (답변을 기다리는 시간을 아낄 수 있습니다) - 코드에 오타가 없는지 면밀히 체크해보세요 (Date와 Data를 많이 헷갈리십니다) - 이전에 올린 질문에 달린 답변들에 꼭 반응해주세요 (질문에 대한 답변만 받으시고 쌩 가시면 속상해요 😢) 질문 하실때 꼭 확인하세요 - 제목만 보고도 무슨 문제가 있는지 대충 알 수 있도록 자세한 제목을 정해주세요 (단순 단어 X) - 질문의 배경정보를 제공해주세요 (이 문제가 언제 어떻게 발생했고 어디까지 시도해보셨는지) - 문제를 재현하도록 코드샌드박스나 깃허브 링크로 전달해주세요 (프로젝트 코드에서 문제가 발생할 경우) - 답변이 달렸다면 꼭 확인하고 반응을 남겨주세요 - 강의의 몇 분 몇 초 관련 질문인지 알려주세요! - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

  • javascript
  • react
  • node.js
황유나 댓글 3 좋아요 0 조회수 314

교재 문의 드립니다.

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

선생님, 교재중에 p157번 보면 cond = df['views']<=1000 df = df[cond] df['f4'].value_counts() print(df.index[0]) 정답이 isfj라고 되어있는데요. df.index[0] 하면 인덱스가 0인 값을 물어보니까 횟수 3이 답이 되는거 아닌가요? 그 위에 코드에서도 f4 컬럼 종류별 개수로 한번 value_counts를 했어서요 정답은 isfj라고 되어있는데 제가 잘못 풀은걸까요?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
moonwrd 댓글 1 좋아요 0 조회수 96

코드로 배우는 React with 스프링부트 개정판3

미해결

코드로 배우는 React 19 with 스프링부트 API서버

코드로 배우는 React with 스프링부트 개정판3 영는 React with 스프링부트 개정판3 영풍문고 IT 코너에 메인으로 전시되어 있네요. 최근 개정판 맞죠? 너무 반가워서 ^^ 응원 하러 왔어요 ^^ 스프링 mvc의 기초를 다져준 이 강의에 꽤나 인상이 깊었나 봐요 ^^ 이어서 Reactor, webflux 강의도 기대해 봅니다 ^^)*

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
just kim 댓글 1 좋아요 0 조회수 165

df.reset_index(drop=True)는 df에 대입하지 않아도 되나요?

미해결

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

안녕하세요, 선생님 df.reset_index(drop=True)는 df에 대입하지 않아도 되나요?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
minjilz 댓글 2 좋아요 0 조회수 137

오류가 왜 뜨는 지 모르겠어요

미해결

초보자를 위한 ChatGPT API 활용법 - API 기본 문법부터 12가지 프로그램 제작 배포까지

수업한 것을 보고 새롭게 만들었어요! 근데 사이트에서 자꾸 이게 떠요 RateLimitError : You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors . Traceback: File "C:\Users\a0108\OneDrive\바탕 화면\creative\creative_env\lib\site-packages\streamlit\runtime\scriptrunner\exec_code.py", line 88, in exec_func_with_error_handling result = func() File "C:\Users\a0108\OneDrive\바탕 화면\creative\creative_env\lib\site-packages\streamlit\runtime\scriptrunner\script_ runner.py ", line 579, in code_to_exec exec(code, module.__dict__) File "C:\Users\a0108\OneDrive\바탕 화면\creative\ creative.py ", line 76, in <module> main() File "C:\Users\a0108\OneDrive\바탕 화면\creative\ creative.py ", line 48, in main st.info (askGpt_mart(prompt)) File "C:\Users\a0108\OneDrive\바탕 화면\creative\ creative.py ", line 6, in askGpt_mart response = openai.ChatCompletion.create(model='gpt-4o-mini', messages=messages_prompt) File "C:\Users\a0108\OneDrive\바탕 화면\creative\creative_env\lib\site-packages\openai\api_resources\chat_ completion.py ", line 25, in create return super().create(*args, **kwargs) File "C:\Users\a0108\OneDrive\바탕 화면\creative\creative_env\lib\site-packages\openai\api_resources\abstract\engine_api_ resource.py ", line 153, in create response, _, api_key = requestor.request( File "C:\Users\a0108\OneDrive\바탕 화면\creative\creative_env\lib\site-packages\openai\api_ requestor.py ", line 298, in request resp, got_stream = self._interpret_response(result, stream) File "C:\Users\a0108\OneDrive\바탕 화면\creative\creative_env\lib\site-packages\openai\api_ requestor.py ", line 700, in _interpret_response self._interpret_response_line( File "C:\Users\a0108\OneDrive\바탕 화면\creative\creative_env\lib\site-packages\openai\api_ requestor.py ", line 765, in _interpret_response_line raise self.handle_error_response( 코드는 이렇게 짜여 있어요! import openai import streamlit as st def askGpt_mart(prompt): messages_prompt = [{"role": "system", "content": "친절하고 과학에 대해 깊게 알고 있는 다정한 과학자야. 그래서 답변할 때 다정하고 구체적으로 답변하고 단어가 어려우면 단어의 대체언어도 같이 나태내줘"},{"role":"user","content": f"{prompt}에 대한 실험 도구와 재료를 알려줘"}] response = openai.ChatCompletion.create(model='gpt-4o-mini', messages=messages_prompt) gptResponse = response["choices"][0]["message"]["content"] return gptResponse def askGpt_method(prompt): messages_prompt = [{"role": "system", "content": "너는 똑똑하고 친절한 과학자야. 그래서 실험 방법을 구체적으로 쉽게 설명해주고 어려운 단어는 쓰지 않아."},{"role":"user","content": f"{prompt}에 대한 실험 방법을 알려줘"}] response = openai.ChatCompletion.create(model='gpt-4o-mini', messages=messages_prompt) gptResponse = response["choices"][0]["message"]["content"] return gptResponse def askGpt_dev(prompt,prompt1,prompt2,prompt3): messages_prompt = [{"role": "system", "content": "너는 똑똑하고 친절하고 섬세한 과학자야. 원래 실험 방법에서 사용자의 환경을 고려하여 적절하게 실험 방법을 바꿔서 구체적이고 세세하게 알려주는 과학자야."},{"role":"user","content": f"나는 {prompt}에 대한 실험을 할거야. 하지만 나는 {prompt1}이 없어. 그래서 {prompt1}은 쓰지 못해. {prompt1}을 사용하는 실험 방법을 바꾸되 성공하게 하는 실험 방법을 알려줘 나는 {prompt2}에서 실험을 진행할 거야. 상황과 환경에 맞는 실험 방법을 부탁해. 또 {prompt3}(이)라는 추가적인 환경과 조건이 있으니까 이 모두를 적절히 고려해서 완전히 구체적이고 세부적이고 자세한 실험 방법을 알려줘" }] response = openai.ChatCompletion.create(model='gpt-4o-mini', messages=messages_prompt) gptResponse = response["choices"][0]["message"]["content"] return gptResponse def askGpt(prompt): messages_prompt = [{"role": "system", "content": "너는 청자가 이 실험을 처음 하는 사람인 것을 알아서 이 실험이 실패할 수 있는 일을 구체적이고 자세하게 설명하면서 그러지 않기 위해서 어떻게 해야하는지 답하는 과학자야"},{"role" : "user", "content":f"{prompt}에 대한 실험 주의사항을 구체적으로 알려줘"}] response = openai.ChatCompletion.create(model='gpt-3.5-turbo', messages=messages_prompt) gptResponse = response["choices"][0]["message"]["content"] return gptResponse def main(): with st.sidebar: # Open AI API 키 입력받기 open_apikey = st.text_input(label='OPENAI API 키', placeholder='Enter Your API Key', value='',type='password') # 입력받은 API 키 표시 if open_apikey: openai.api_key = open_apikey st.markdown('---') st.header("AI 실험 도우미 ⚗️") st.markdown("---") ex_name = st.text_input("실험 이름",placeholder="거울 구리 실험, 나트륨 폭발 실험, 코끼리 실험...") co1,co2 = st.columns(2) with co1: if st.button("실험 도구 및 재료 안내"): prompt = ex_name st.info(askGpt_mart(prompt)) with co2: if st.button("실험 방법 안내"): prompt = ex_name st.info(askGpt_method(prompt)) st.markdown("===") col1,col2,col3 = st.columns(3) with col1: no_mar = st.text_input("없는 준비물",placeholder="유리막대, 비이커, 전자현미경...") with col2: where = st.text_input("장소",placeholder="집, 학교 실험실, 대학 생명과학 실험실...") with col3: add = st.text_input("추가 정보",placeholder="습도를 바꾸지 못함, 기온이 20도 이상으로 올라가지 않음...") if st.button("AI 실험 도우미"): prompt,prompt1,prompt2,prompt3 = ex_name,no_mar,where,add st.info(askGpt_dev(prompt,prompt1,prompt2,prompt3)) if st.button("주의사항"): prompt = ex_name st.info(askGpt(prompt)) if __name__=='__main__': main()

  • python
  • 챗봇
  • streamlit
  • openai
  • chatgpt
gimgirl 댓글 1 좋아요 0 조회수 241

[빠짝스터디 1주차 과제] ARRAY, STRUCT 연습 문제/ PIVOT 연습문제/ 퍼널 쿼리 연습 문제

미해결

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

[ARRAY, STRUCT] array_exercises 테이블에서 각 영화(title)별로 장르(genres)를 UNNEST해서 보여주세요. SELECT title, #genres, genre FROM `advanced.array_excercises` ae cross join unnest(genres) as genre; 2. array_exercies 테이블에서 각 영화(title)별로 배우(actor)와 배역(character)을 보여주세요 배우와 배역은 별도의 컬럼으로 나와야 합니다. select title, actor.actor, actor.character from `advanced.array_excercises` cross join unnest(actors) as actor; array_exercises 테이블에서 각 영화(title)별로 배우(actor), 배역(character), 장르 (genre)를 출력하세요. 한 Row에 배우, 배역, 장르가 모두 표시되어야 합니다. select title, actor.actor, actor.character, genre from `advanced.array_excercises` cross join unnest(actors) as actor cross join unnest(genres) as genre; 앱 로그 데이터(app_logs) 배열 풀기 select user_id, event_date, event_name, user_pseudo_id, params.key, params.value.string_value as string_value, params.value.int_value as int_value from `advanced.app_logs` cross join unnest(event_params) as params where event_date = "2022-08-01 [PIVOT] orders 테이블에서 유저(user_id)별로 주문 금액(amount)의 합계를 PIVOT해주세요. 날짜(order_date)를 행(Row)으로, user_id를 열(Column)으로 만들어야 합니다. select order_date, # amount의 합 sum(if(user_id=1, amount, 0)) as user_1, sum(if(user_id=2, amount, 0)) as user_2, sum(if(user_id=3, amount, 0)) as user_3 FROM `advanced.orders` group by order_date order by order_date; orders 테이블에서 날짜(order_date)별로 유저들의 주문 금액(amount)의 합계를 PIVOT 해주세요. user_id를 행(Row)으로, order_date를 열(Column)으로 만들어야 합니다 select user_id, sum(if(order_date = "2023-05-01", amount, 0)) as `2023-05-01`, sum(if(order_date = "2023-05-02", amount, 0)) as `2023-05-02`, sum(if(order_date = "2023-05-03", amount, 0)) as `2023-05-03`, sum(if(order_date = "2023-05-04", amount, 0)) as `2023-05-04`, sum(if(order_date = "2023-05-05", amount, 0)) as `2023-05-05` from `advanced.orders` group by user_id order by user_id; orders 테이블에서 사용자(user_id)별, 날짜(order_date)별로 주문이 있다면 1, 없다면 0으로 PIVOT 해주세요. user_id를 행(Row)으로, order_date를 열(Column)로 만들고 주문을 많이 해도 1로 처리합니다. select user_id, max(if(order_date = "2023-05-01", 1, 0)) as `2023-05-01`, max(if(order_date = "2023-05-02", 1, 0)) as `2023-05-02`, max(if(order_date = "2023-05-03", 1, 0)) as `2023-05-03`, max(if(order_date = "2023-05-04", 1, 0)) as `2023-05-04`, max(if(order_date = "2023-05-05", 1, 0)) as `2023-05-05` from `advanced.orders` group by user_id order by user_id; user_id = 32888이 카트 추가하기(click_cart)를 누를때 어떤 음식(food_id)을 담았나요? with base as ( select -- * EXCEPT(event_params), # * except(컬럼) :컬럼을 제외하고 모두 다 보여줘 -- param event_date, event_timestamp, event_name, user_id, user_pseudo_id, max(if(param.key = "firebase_screen", param.value.string_value, null)) as firebase_screen, -- max(if(param.key = "food_id", param.value.string_value, null)) as food_id, max(if(param.key = "food_id", param.value.int_value, null)) as food_id, max(if(param.key = "session_id", param.value.string_value, null)) as session_id from `advanced.app_logs` cross join unnest(event_params) as param group by all ) select user_id, event_date, count(user_id) as user_cnt, food_id from base where user_id = 32888 and event_name = "click_cart" group by all [퍼널분석] with base as ( SELECT event_date, event_timestamp, event_name, user_id, user_pseudo_id, platform, max(if(event_param.key = "firebase_screen", event_param.value.string_value, null)) as firebase_screen, max(if(event_param.key = "session_id", event_param.value.string_value, null)) as session_id from `advanced.app_logs` cross join unnest(event_params) as event_param where event_date between "2022-08-01" and "2022-08-18" group by all ), filter_event as( select * except(event_name, firebase_screen, event_timestamp), concat(event_name, "-", firebase_screen) as event_name_with_screen, DATETIME(timestamp_micros(event_timestamp),'Asia/Seoul')AS event_datetime from base where event_name IN("screen_view", "click_payment") ), screen_view as( select event_date, event_name_with_screen, case when event_name_with_screen = "screen_view-welcome" then 1 when event_name_with_screen = "screen_view-home" then 2 when event_name_with_screen = "screen_view-food_category" then 3 when event_name_with_screen = "screen_view-restaurant" then 4 when event_name_with_screen = "screen_view-cart" then 5 when event_name_with_screen = "click_payment-cart" then 6 else null end as step_number, count(distinct user_pseudo_id) as cnt from filter_event group by all having step_number is not null order by event_date ) select event_date, max(if(event_name_with_screen = "screen_view-welcome", cnt, null)) as screen_view_welcome, max(if(event_name_with_screen = "screen_view-home", cnt, null)) as screen_view_home, max(if(event_name_with_screen = "screen_view-food_category", cnt, null)) as screen_view_food_category, max(if(event_name_with_screen = "screen_view-restaurant", cnt, null)) as screen_view_restaurant, max(if(event_name_with_screen = "screen_view-cart", cnt, null)) as screen_view_cart, max(if(event_name_with_screen = "click_payment-cart", cnt, null)) as click_payment_cart from screen_view group by all order by event_date

  • sql
  • Google-Analytics
  • firebase
  • google-sheets
  • bigquery
kyb6010 댓글 1 좋아요 0 조회수 104

인기 태그

인프런 TOP Writers

주간 인기글