Daily plan
🌞오전
- 데일리 스크럼
- 코드카타 SQL 3문제
- 코드카타 Python 5문제
- 아티클 스터디
🔥 오후
- 빅분기 3과목 강의
- 데이터 리터러시 강의
- 파이썬 개인 과제
🌝 저녁
- 강의 못들은 거 다 듣기
- 데일리 스크럼 + TIL 제출
SELECT *
FROM PLACES
WHERE HOST_ID IN (
SELECT HOST_ID
FROM PLACES
GROUP BY HOST_ID
HAVING COUNT(ID)>1
)
ORDER BY ID
나는 WHERE절에 서브쿼리를 작성하는 방식을 선택 했지만, 다음과 같이 JOIN을 활용해서 풀이할 수도 있다.
SELECT P1.*
FROM PLACES P1
INNER JOIN (SELECT HOST_ID, COUNT(ID) CNT_ID
FROM PLACES
GROUP BY HOST_ID) P2
ON P1.HOST_ID=P2.HOST_ID
WHERE P2.CNT_ID>1
ORDER BY P1.ID
SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME='Yogurt' OR NAME='Milk'
GROUP BY CART_ID
HAVING COUNT(DISTINCT NAME) = 2
ORDER BY CART_ID
언제쯤 DISTINCT랑 친해질 수 있을까? 요거트나 우유를 구매한 정보만 추출해서 CART_ID로 묶어주고, 각 CART_ID마다 중복 제거해서 개수를 세었을 때 2개가 되는 것들을 골라내면 되는 문제였는데 DISTINCT를 생각해내지 못해서 오래 걸렸다!!
결국 챗지피티한테 힌트 구걸함..ㅋㅋ
(챗지피티한테 힌트 물어보는 거 생각도 못했는데, 오전에 튜터님께서 파이썬 공부 팁과 함께 이런 방법도 있다는 것을 알려주셨다.. 감사합니다ㅜ.ㅜ)
SELECT CONCAT('/home/grep/src/',F.BOARD_ID,'/',F.FILE_ID,F.FILE_NAME,F.FILE_EXT) FILE_PATH
FROM (SELECT BOARD_ID
FROM USED_GOODS_BOARD
ORDER BY VIEWS DESC
LIMIT 1) B
JOIN USED_GOODS_FILE F
ON B.BOARD_ID=F.BOARD_ID
ORDER BY F.FILE_ID DESC
분명 맞게 작성한 것 같은데 자꾸 틀렸다고 해서 당황했다. 한참을 째려보다가 CONCAT에서 FILE_NAME을 빼먹었다는 걸 아주 뒤늦게 발견...ㅎㅎ;
def solution(n):
x=0
while(n>0):
x += n%10
n = n//10
return x
난 이걸 그냥 while문을 사용해서 단순하게 계산했는데
def sum_digit(number):
if number < 10:
return number
return number%10 + sum_digit(number//10)
이렇게 재귀함수를 이용해서 풀 수도 있는 거였다니...!!! 한 수 배우고 갑니다,,
def sum_digit(number):
return sum([int(i) for i in str(number)])
이것도 나보다 훨씬 깔끔하다. 나도 이런 방법을 바로바로 떠올리고 싶다ㅜ.ㅜ
def solution(n):
sum = 0
for i in range(1,n//2+1):
if n%i==0:
sum+=i
return sum+n
이걸 최대한 간략하게 줄이면 다음과 같다.
def solution(n):
return num + sum([i for i in range(1, (num // 2) + 1) if num % i == 0])
어차피 내용은 똑같은데 무조건 줄여쓰는 게 더 좋은 건 아닐 것 같다.
def solution(x, n):
answer = []
while len(answer)!=n:
answer.append(x)
x+=answer[0]
return answer
def number_generator(x, n):
return [i * x + x for i in range(n)]
answer이라는 리스트를 만들고 while문으로 하나씩 append하는 것보다,
걍 범위를 n으로 정하고 for문을 사용해서 바로 리스트로 만들어 리턴하면 훨씬 간단한 코드가 되는구나..
데이터 분석이 목적이 되지 않도록 항상 '왜?'를 생각해야 함
문제 정의 예제
- 상황
: 3개월 전부터 자사 제품 사용자 수 감소, 포인트 이벤트의 효과도 없어 보임, 자사 제품 내 서비스 중 A보다 B가 더 안 좋은 상황, 사용자가 줄어 수입도 감소함
- 문제 정의
사용자 수가 감소하고 있음 -> 원인 (근본적인 문제가 아님)
포인트 이벤트의 효과가 없음 -> 근본적 문제가 아님
서비스 B의 상황이 좋지 않음 -> 근본적 문제가 아님
수입이 감소함 -> 가장 중요한 문제라고 판단 가능 (더 명확한 정의가 필요)
정량적 데이터 vs 정성적 데이터
정량적 데이터 | 정성적 데이터 | |
---|---|---|
유형 | 정형 데이터 / 반정형 데이터 | 비정형 데이터 |
특징 및 관점 | 여러 요소의 결합으로 의미 부여 | 객체 하나가 함축된 의미 내포 |
주로 객관적 내용 | 주로 주관적 내용 | |
구성 및 형태 | 수치나 기호, 데이터베이스, 스프레드 시트 | 문자나 언어, 웹 로그, 텍스트 파일 |
위치 | DBMS, 로컬 시스템 등 내부 | 웹사이트, 모바일 플랫폼 등 외부 |
분석 | 통계 분석 시 용이 | 통계 분석 시 어려움 |
확실히 인터넷강의 듣는 거 너무 안 맞는다... 늘 생각하는 거지만 정말 안맞아...
문제 풀면서 공부하는 건 재밌는데 강의만 들으려고 하면 집중력이 나가리된다.ㅜㅜ
그래도 들어야지...
내일은 차라리 강의 듣는 걸 오전에 해치워버리고 집중력 떨어질 때 문제 풀이를 해봐야겠다!