DS가 되기 위한 여정 👩‍💻
728x90
반응형

Data Science/SQL 44

[프로그래머스 sql] 윈도우 함수

윈도우 함수 - 맨날 헷갈려서.. 지피티한테 물어서 정리함.  - sql 데이터 집합을 계산해서 수행하는 함수로, row행 단위로 결과 반환하면서, - 전체 결과 집합에 대한 계산을 기반으로 함. => 각 행 계산 + 같은 그룹에 적용되도록 - over 절: 함수에서 계산을 적용할 윈도우(그룹 or 범위) 정의- order by: 윈도우 내에서 데이터를 어떯게 정렬할지 정의  - partition by: 위도우를 그룹화할 때 사용 SELECT ID, SIZE_OF_COLONY, NTILE(4) OVER (PARTITION BY ID ORDER BY SIZE_OF_COLONY DESC) AS QUARTILEFROM ECOLI_DATA; - ntile(n)- n개 그룹으로 나누고, 각행이 어느 그..

Data Science/SQL 2025.02.16

[프로그래머스 sql] percent_rank(), NTILE()

대장균의 크기에 따라 분류하기 2 수정 전 - 이게 그냥 내 최선이었음... 하..- 진짜ㅣ... 함수따위 쓸줄 모르는.. 무식한 방법이었다.. -- ORDERBY로 크기를 순서대로 하고, count(*)로 나눠서 *100 하고, 그 지점이 .25, .50, .7, 1 인데.. 이걸 어케 해야 하냐.. -- 서브쿼리 같은데...SELECT ID, CASE WHEN SIZE_OF_COLONY 0.25 AND SIZE_OF_COLONY 0.5 AND SIZE_OF_COLONY 0.75 AND SIZE_OF_COLONY  수정 후 1- percent_rank() 윈도우 함수로 백분율을 더 정확히 확인 가능- 근데 시도하니깐.. 답이 계속 틀림...WITH RANKED AS ( SELECT I..

Data Science/SQL 2025.02.16

[프로그래머스 sql] 비트 연산(&), join 제발 쓸 것. 한 번에 한 정보만이니까

부모의 형질을 모두 가지는 대장균 찾기수정전SELECT ID, GENOTYPE, PARENT_ID AS PARENT_GENOTYPEFROM ECOLI_DATAWHERE (GENOTYPE & PARENT_ID = 1)ORDER BY ID; - 여기까진 했는데.. 값이 실패로 뜬다.. - 부모의 형질이랑 같은 형질인 경우를 찾는 거니깐 맞을 거 같은데 뭐가 문제일까 - null을 따로 안 뺀 거..? 근데 그건 어차피.. 저 조건에서 걸리는 게 아닌가?  수정후1- 문제를 잘못 이해했음...문제를 똑바로 읽을 것 이것은 독해력의 문제이다..- 한 테이블에서 여러개를 가져와서 동시에 비교하지 못하기 때문에 무조건 join을 써야 함. - 그 상태에서 비트 연산을 쓸 때도.. 참일 때 1일인게 중요한 것이 아니..

Data Science/SQL 2025.02.15

[프로그래머스 sql] 이진수로 바꾸기 bin(), 비트 연산(&)

특정 형질을 가지는 대장균 찾기수정전SELECT COUNT(GENOTYPE)FROM ECOLI_DATAWHERE BIN(GENOTYPE) - 오랜만에 풀으러 들어왔더니..수정전에 의미도 없다. 이진으로 만들긴해야 하는데 어떻게 해야 하지하고, bin()을 찾긴 했는데.. 이걸 어떻게 조건으로 해야 하나 ..머리가 백지 같다.   수정후1- case로 처리해야 하나, 했는 데 그냥 and로 조건을 주면 됨..- 어떤 분이 substr()로 해당 값을 비교하심SELECT COUNT(*) AS COUNTFROM ECOLI_DATAWHERE SUBSTRING(BIN(GENOTYPE), -2, 1) != '1' -- 2번짼 1이 아니어야 함AND (SUBSTRING(BIN(GENOTYPE), -1, 1) = '1..

Data Science/SQL 2025.02.15

[프로그래머스 sql] coalesce()로 null 다른 값으로 변환

12세 이하인 여자 환자 목록 출력하기 - 이게.. 왜 안될까.. ?  수정 전SELECT PT_NAME, PT_NO, GEND_CD, AGE, CASE WHEN TLNO = NULL THEN TLNO = 'NONE' ELSE TLNO -- none이 안 뜨고.. 사라짐. END AS TLNOFROM PATIENTWHERE AGE  수정 후 1)- 얼추 맞는 코드로 보이나..- 근데, tlno가 숫자로 되어 있기 때문에.. 제대로 동작하지 않음.SELECT PT_NAME, PT_NO, GEND_CD, AGE, CASE WHEN TLNO IS NULL THEN 'NONE' ELSE TLNO -- null, none은 = 연산자가 안되서, is 써야 함.. END AS TLNOFROM PATIENTW..

Data Science/SQL 2025.02.04

[프로그래머스 sql] date_format() 사용할 것.

흉부외과 또는 일반외과 의사 목록 출력하기 - sql 형변환을.. 어떻게 해야하지..?그냥 시간만 잘라야 하나.. 고민하다가 다른 분들 답변을 보니깐substr() 로 그냥 시간 부분을 자르는 분들도 있었는데date_format()사용해서 딱 해당 부분만 출력하시는 분의 답변을 가져왔다.  수정 전SELECT DR_NAME, DR_ID, MCDP_CD, date(HIRE_YMD) -- 어찌할 바를 모르고,, 냅다 date 시전FROM DOCTOR WHERE MCDP_CD = 'CS' OR MCDP_CD ='GS'ORDER BY HIRE_YMD DESC, DR_NAME; 수정 후SELECT DR_NAME, DR_ID, MCDP_CD, date_format(HIRE_YMD, '%Y-%m-%d') as HI..

Data Science/SQL 2025.02.04

[프로그래머스 sql] group by는 select 값이 전부 포함되어야 함.

재구매가 일어난 상품과 회원 리스트 구하기 뭐가 문제인 걸까..? 수정전 SELECT USER_ID, PRODUCT_IDfrom ONLINE_SALEgroup by PRODUCT_IDhaving count(*) > 1order by USER_ID, PRODUCT_ID desc; 수정 후 .. 2개 밖에 없어서.. 그룹바이를 하나로 했는데..select 값 2개 다 넣으니깐.. 해결.. 처음에 그렇게 했다가 이상한 줄.. SELECT USER_ID, PRODUCT_IDfrom ONLINE_SALEgroup by USER_ID, PRODUCT_IDhaving count(*) > 1order by USER_ID, PRODUCT_ID desc;

Data Science/SQL 2025.02.03

[HackerRank sql] Symmetric Pairs 다소 이해가 안감

Symmetric Pairs 수정 전- 사실 상.. 전혀 코드를 떠올리지 못했고..디스커션을 치팅함.. 셀프 조인인데.. 어떻게 줘야 할지조차도 모르겠더라..select f.x, f.yfrom functions fjoin functions f1 on f.x = f1.y -- on에 조건식을 넣을 수도 있는 건데 전혀 생각을 못 했음...where f.x  수정 후 ... 대칭적인 쌍은 서로 다른 두 값을 의미하기 때문에, 자기 자신인 x=y인 경우에는 대칭 쌍이 될 수 가 없다.. -  그래서 해당하는 값을 빼야 하기 때문에 HAVING COUNT(*) > 1 조건을 추가해서 중복을 없애게 함. - 추가적으로, cte를 사용해서 self join의 복잡도를 줄여야 함..- 하.. cte만 집중적으로 연습..

Data Science/SQL 2025.01.28

[HackerRank sql] where절과 from절 서브쿼리 차이

Contest Leaderboard- 나름 거의 다 했는데..- 0일 때 제외하는 조건을.. 고민하다가 틀렸다. - 검색해서 not in으로 해볼려고 했는데.. 하면서도 뭔가 이상하더라. ㅎ 수정 전select h.hacker_id, h.name, sum(s.score)from hackersjoin submissions s using(hacker_id)group by h.hacker_id, h.namehaving s.score = (select max(s1.score) from submissions s1 where s1.challenge_id = s.challenge_id and not in (s1.score = 0)..

Data Science/SQL 2025.01.28

[HackerRank sql] 집계함수 내에도 필요하면 distinct 쓸 것.

New CompaniesNote: -> 노트에 주의할 것. The tables may contain duplicate records. => 그게 아니라 중복이.. 문제였던 것The company_code is string, so the sorting should not be numeric. For example, if the company_codes are C_1, C_2, and C_10, then the ascending company_codes will be C_1, C_10, and C_2.- 왠지 서브쿼리로 빼야 할 거 같은데 .. 나의 한계이다.. 도저히 모르겠어.. ㅠ- 난 그룹바이를 복잡하게 빼는 것을 어떻게 할 지를 모르겠어... - where절로 빼는 게 맞는 건가?   수정 전sele..

Data Science/SQL 2025.01.26
728x90
반응형