목록분류 전체보기 (392)
Hanbit the Developer
SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%Y-%m-%d') AS 날짜 FROM ANIMAL_INS DATE_FORMAT()을 통해 형 변환을 해줍니다.
SELECT INS.ANIMAL_ID, INS.NAME FROM ANIMAL_INS INS, ANIMAL_OUTS OUTS WHERE OUTS.ANIMAL_ID = INS.ANIMAL_ID ORDER BY OUTS.DATETIME - INS.DATETIME DESC LIMIT 2 ORDER BY 구문이 핵심입니다. 보호 기간이 길었을수록 (OUTS.DATETIME - INS.DATETIME)이 커지므로 DESC를 통해 내림차순으로 정렬해줍니다.
SELECT ANIMAL_ID, NAME, CASE WHEN SEX_UPON_INTAKE LIKE "%Neutered%" OR SEX_UPON_INTAKE LIKE "%Spayed%" THEN "O" ELSE "X" END AS "중성화" FROM ANIMAL_INS CASE - WHEN - ELSE - END로 경우에 따라 "O"와 "X"로 나눈 뒤, AS를 통해 "중성화"라는 컬럼으로 조회하도록 해줍니다.
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE NAME like '%el%' AND ANIMAL_TYPE='Dog' ORDER BY NAME WHERE절이 핵심입니다. %는 글자수와 상관 없는 조건이며, -는 글자수의 영향을 받습니다. 가령 'Cellular'이라는 문자열을 두고 고려해보았을 때, '%el%'는 불러오겠지만, '-el-'은 불러오지 않습니다. '-el-----'을 쓸 경우에는 조회합니다.
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE FROM ANIMAL_INS WHERE NAME in ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty') ORDER BY ANIMAL_ID 설명이 필요하지 않다고 생각합니다.
SELECT OUTS.ANIMAL_ID, OUTS.ANIMAL_TYPE, OUTS.NAME FROM ANIMAL_OUTS OUTS LEFT JOIN ANIMAL_INS INS ON INS.ANIMAL_ID = OUTS.ANIMAL_ID WHERE INS.SEX_UPON_INTAKE LIKE 'Intact%' AND (OUTS.SEX_UPON_OUTCOME LIKE 'Spayed%' OR OUTS.SEX_UPON_OUTCOME LIKE 'Neutered%') ORDER BY OUTS.ANIMAL_ID WHERE절이 핵심입니다. WHERE INS.SEX_UPON_INTAKE LIKE 'Intact%' => "들어올 당시에는 중성화되지 않았지만" AND (OUTS.SEX_UPON_OUTCOME LIKE 'Sp..
SELECT INS.NAME, INS.DATETIME FROM ANIMAL_INS INS LEFT OUTER JOIN ANIMAL_OUTS OUTS ON INS.ANIMAL_ID = OUTS.ANIMAL_ID WHERE OUTS.ANIMAL_ID is null ORDER BY INS.DATETIME LIMIT 3 WHERE절, LEFT OUTER JOIN절이 핵심입니다. 입양을 가지 못했다는 것은, ANIMAL_INS에는 있되 ANIMAL_OUTS에는 없다는 것을 의미하지요. 따라서 OUTER을 써주고, 그 뒤에 WHERE에서 is null을 통해 그것을 구분해주는 것입니다.
SELECT INS.ANIMAL_ID, INS.NAME FROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTS ON OUTS.ANIMAL_ID = INS.ANIMAL_ID WHERE INS.DATETIME>OUTS.DATETIME ORDER BY INS.DATETIME WHERE절이 핵심입니다. "보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해주세요."
def isThere(List, num): left, right = 0, len(List)-1 while left num: right = mid - 1 elif List[mid]
N = int(input()) ropes = [] for _ in range(N): ropes.append(int(input())) ropes.sort(reverse=True) maxWeight = 0 for i in range(len(ropes)): maxWeight = max(maxWeight, ropes[i]*(i+1)) print(maxWeight) 버틸 수 있는 중량(ropes)를 오름차순으로 정렬한 뒤, for문을 돌면서 최대 중량을 (현재 로프의 중량)*(지금까지 로프 갯수)를 통해 갱신시켜준다.