SELECT
id
, email
, first_name
, last_name
FROM
developer_infos
WHERE
skill_1 = 'Python'
OR skill_2 = 'Python'
OR skill_3 = 'Python'
ORDER BY
id
;
SELECT
id
, email
, first_name
, last_name
FROM
developer_infos
WHERE
'Python' IN (skill_1, skill_2, skill_3)
ORDER BY
id
;
→ 풀면서 조금 궁금한 부분이 생겨서 여기에 정리함
SELECT
ID
, EMAIL
, FIRST_NAME
, LAST_NAME
FROM
DEVELOPER_INFOS
WHERE
CONCAT_WS(', ', SKILL_1, SKILL_2, SKILL_3) REGEXP 'Python'
ORDER BY
ID
WITH cte AS (
SELECT
SUM(`code`)
FROM
skillcodes
WHERE
name IN ('Python', 'C#')
)
SELECT
DISTINCT id
, email
, first_name
, last_name
FROM
developers
WHERE
skill_code & (TABLE cte) >= 1
ORDER BY
id
;
SELECT DISTINCT(ID), EMAIL, FIRST_NAME, LAST_NAME FROM DEVELOPERS
WHERE SKILL_CODE& (
(SELECT CODE FROM SKILLCODES WHERE NAME = 'Python') +
(SELECT CODE FROM SKILLCODES WHERE NAME = 'C#')
)!= 0
ORDER BY ID ASC;
SELECT DISTINCT D.ID, D.EMAIL, D.FIRST_NAME, D.LAST_NAME
FROM DEVELOPERS AS D
JOIN SKILLCODES AS S
ON (D.SKILL_CODE & S.CODE) = S.CODE AND S.NAME IN ('Python', 'C#')
ORDER BY D.ID;
힌트
개발자의 SKILLCODES 가 400인 경우 이진수 변환 시
110010000
Python 이진수 변환 시100000000
110010000 & 100000000
→ 두 자리 모두 1 인 경우만 1 나머지는 0
결과 : 100000000
(D.SKILL_CODE & S.CODE) = S.CODE
- SKILLCODES 테이블의 CODE 값들을 직접 넣어주면 안되나?
→ 테이블의 값이 변경 될 경우 업데이트가 안되므로 통과하지 못함- on 에는 같은값만 들어가는게 아님!
on 은 join 전 조건값을 주는것이라고 생각하면 된다- ('Python', 'C#') 을 어디에서 조건을 걸어줘야하지?
결과적으로 ON,WHERE 둘다 되는데 ON 에 넣을경우 좀더 효율적인 필터링이 가능해서(조건에 해당하는것만 가져오므로 효율적) ON 으로 넣었다
SELECT DISTINCT
D.ID,
D.EMAIL,
D.FIRST_NAME,
D.LAST_NAME
FROM
DEVELOPERS D
LEFT OUTER JOIN SKILLCODES S
ON (D.SKILL_CODE % (S.CODE * 2)) >= S.CODE
WHERE
S.NAME = 'Python'
OR S.NAME = 'C#'
ORDER BY D.ID
SELECT
D.ID,
D.EMAIL,
D.FIRST_NAME,
D.LAST_NAME
FROM
DEVELOPERS D
WHERE EXISTS (
SELECT 1
FROM SKILLCODES S
WHERE (D.SKILL_CODE & S.CODE) != 0
AND (S.NAME = 'Python' OR S.NAME = 'C#')
)
ORDER BY D.ID;
import math
def solution(brown, yellow):
w = ((brown+4)/2 + math.sqrt(((brown+4)/2)**2-4*(brown+yellow)))/2
h = ((brown+4)/2 - math.sqrt(((brown+4)/2)**2-4*(brown+yellow)))/2
return [w,h]
→ 근의 공식 이용해서 풀었음

def solution(brown, yellow):
answer = []
yellow_x = 0
yellow_y = 0
for i in range(1, yellow+1):
if yellow % i == 0:
yellow_x = yellow // i
yellow_y = i
if 2*yellow_x + 2*yellow_y + 4 == brown:
answer.append(yellow_x+2)
answer.append(yellow_y+2)
break
answer.sort(reverse = True)
return answer

def solution(brown, yellow):
answer = []
total = brown + yellow # a * b = total
for b in range(1,total+1):
if (total / b) % 1 == 0: # total / b = a
a = total / b
if a >= b: # a >= b
if 2*a + 2*b == brown + 4: # 2*a + 2*b = brown + 4
return [a,b]
return answer
def solution(brown, yellow):
answer = []
yellow_x = 0
yellow_y = 0
for i in range(1, yellow+1) :
if yellow % i == 0 :
yellow_x = int(yellow/i)
yellow_y = i
if yellow_x*2 + yellow_y*2 + 4 == brown :
answer.append(yellow_x+2)
answer.append(yellow_y+2)
return sorted(answer, reverse = True)
return answer
.keys()인 것 같음
.txt 파일 데이터프레임으로 만들기
{{VARIABLE명}} (중괄호 2번 입력하면 자동완성기능 활용 가능)
