SELECT
COUNT(*) AS fish_count
FROM
fish_info fi
JOIN fish_name_info fni
USING(fish_type)
WHERE
fni.fish_name IN('BASS', 'SNAPPER')
;
WITH get_fish_type AS (
SELECT
fish_type
FROM
fish_name_info
WHERE
fish_name IN ('BASS', 'SNAPPER')
)
SELECT
COUNT(*) AS fish_count
FROM
fish_info
WHERE
fish_type IN (TABLE get_fish_type)
;
2)
WITH get_fish_type AS (
SELECT
fish_type
FROM
fish_name_info
WHERE
fish_name IN ('BASS', 'SNAPPER')
)
SELECT
COUNT(*) AS fish_count
FROM
fish_info
jOIN get_fish_type
USING(fish_type)
;
SELECT
COUNT(*) AS `count`
FROM
ecoli_data
WHERE
genotype & 5
AND NOT genotype & 2
;
WHERE (GENOTYPE & 1 > 0 OR GENOTYPE & 4 > 0) AND (GENOTYPE & 2 = 0)처럼 조건을 걸어주지 않아도 되는 이유
→ where 절에선 0이 아닌 비트는 전부 True
따라서 GENOTYPE & 5 연산이 0이 아니기만 하면 됨
select count(*) as COUNT
from ecoli_data
where
CONV(genotype,10,2) = '1' or
CONV(genotype,10,2) like '%001' or
CONV(genotype,10,2) like '%100' or
CONV(genotype,10,2) like '%101'
왜 1,3번 형질을 구하는데 GENOTYPE의 비트연산자 4를 쓰나요?
1,3번 형질을 구하는거면 GENOTYPE & 1 or GENOTYPE & 3으로 해야하는거 아닌가요?
문제에서 형질의 번호는 2진수에서 1의 위치, 값은 별개로 2진수 자체값으로 비교를 하기 때문입니다.
genotype이 1111(2)일 경우
1,2,3,4를 포함한다는 의미입니다.
형질1은 0001(2) -> 1
형질2는 0010(2) -> 2
형질3은 0100(2) -> 4
형질4는 1000(2) -> 8
과 같이 해당되고, 따라서 형질1과 3을 비교할려면 값 1과 4를 비교해야 하는 것이죠.
-- 1
SELECT COUNT(*) AS "COUNT"
FROM ECOLI_DATA
WHERE GENOTYPE % 8 IN (1,4,5);
--2
SELECT
count(*) as COUNT
FROM ECOLI_DATA
WHERE TRUNCATE((GENOTYPE%4)/2, 0) = 0 and
(GENOTYPE%2 = 1 or TRUNCATE((GENOTYPE%8)/4, 0) = 1)
;
def solution(arr):
from math import gcd
answer = arr[0]
for i in arr:
answer = answer*i // gcd(answer, i)
return answer
def solution(arr):
answer = 0
n = 1
while True:
answer = max(arr) * n # 가장 큰 수의 배수 기준으로 최소공배수를 구함.
result = True # if result=True: 최소공배수 else: 최소공배수가 아님
for num in arr:
if answer % num != 0:
result = False # answer가 나누어 떨어지지 않으면 result=False로 변경 후 break
break
if result: # result 판별 True이면 while True문을 빠져나옴
break
n += 1
return answer
import math
def lcm(a, b):
return a*b // math.gcd(a, b)
def solution(arr):
n = arr[00
for i in arr[1:]:
n = lcm(n, i)
return n
def solution(arr):
temp = lcm(arr[0],arr[1])
for i in range(2,len(arr)):
temp = lcm(temp,arr[i])
return temp
def lcm(a, b):
for i in range(max(a, b), (a * b) + 1):
if i % a == 0 and i % b == 0:
return i
DB에 올리는 과정에서 오류가 나서 주말의 노력이 물거품이 되었다😥
매치 결과를 살펴볼 기간을 정했음
주말에 생각한 방법은 시간이 너무 오래 걸려서 그냥 임의의 GameId 넣기로 했음