WITH cte AS (
SELECT
id
, PERCENT_RANK() OVER (ORDER BY lat_n) AS percent
FROM
station
)
SELECT
ROUND(lat_n, 4)
FROM
station
JOIN cte
USING(id)
WHERE
percent = 0.5
;
※ MySQL에는 median을 구하는 함수 없음
SET @idx = -1;
SELECT
ROUND(AVG(lat_n), 4) AS median
FROM
(
SELECT
@idx := @idx + 1 AS row_num
, lat_n
FROM
sta
ORDER BY
lat_n
) AS sub
WHERE
sub.row_num IN (FLOOR(@idx / 2), CEIL(@idx / 2))
;
-- MySQL 8.0 버전부터 순위 관련 함수 지원
SELECT
ROUND(lat_n, 4)
FROM
(
SELECT
lat_n
, PERCENT_RANK() OVER (ORDER BY lat_n) AS percent
FROM
station
) AS sub
WHERE
sub.percent = 0.5
;
WITH TEMP AS (SELECT LAT_N, ROW_NUMBER() OVER (ORDER BY LAT_N) AS RNK, COUNT(*) OVER () AS N
FROM STATION
)
SELECT ROUND(AVG(LAT_N), 4)
FROM TEMP
WHERE CASE WHEN MOD(N, 2)=1 THEN RNK=(N+1)/2 #주어진 값들의 수가 홀수일 때,
ELSE RNK IN (N/2, (N/2)+1) #주어진 값들의 수가 짝수일 때
END
# where 절에 case clause 사용
;
WITH TEMP AS (SELECT PERCENT_RANK() OVER (ORDER BY LAT_N) AS RNK, LAT_N
FROM STATION
)
SELECT ROUND(AVG(LAT_N), 4)
FROM TEMP
WHERE RNK=0.5
;
→ 이렇게 간단하게 풀 수 있는데 나는 왜 JOIN을 했을까…
SELECT
CASE
WHEN grade >= 8 THEN name
ELSE NULL
END
, grade
, marks
FROM
students s
JOIN grades g
ON marks BETWEEN min_mark AND max_mark
ORDER BY
grade DESC
, name
, marks
;
def solution(keymap, targets):
answer = []
for word in targets:
keystroke = 0 # 단어를 만들기 위해 키 몇 번 눌렀는지
for char in word:
get_targets = False # 단어 만들 수 있는지 여부
length = 101 # keymap 최대 길이가 100이라서 101 넣음
for key in keymap:
if char in key:
length = min(key.index(char)+1, length)
get_targets = True
if not get_targets: # 단어 못 만들면
keystroke = -1 # 키 누름 -1로 설정
break
keystroke += length # 알파벳 하나씩 누른 거 합치기
answer.append(keystroke)
return answer
def solution(keymap, targets):
answer = []
hs = {}
for k in keymap:
for i, ch in enumerate(k):
hs[ch] = min(i + 1, hs[ch]) if ch in hs else i + 1
for t in targets:
ret = 0
for ch in t:
if ch not in hs:
ret = - 1
break
ret += hs[ch]
answer.append(ret)
return answer
def solution(keymap, targets):
answer = []
for target in targets:
c = 0
for t in target:
r = min(list(map((lambda x: x.index(t) + 1 if t in x else 102), keymap)))
if r == 102:
answer.append(-1)
break
else:
c += r
if r != 102:
answer.append(c)
return answer
2024 League of Legends LEC Player Dashboard
The Best Board Game To Try Next (2023 #IronViz Qualifier)
- 태블로 프로젝트의 중점 사항
- 최우선순위 : 목적 ( 기능 중점 활용 )
- 차순위 : 가독성 및 꾸미기
- 추가적 내용 : 태블로에는 금방 적응할 수 있고, 결과는 만들 수 있다. 다만, 어떤 지표를 어떻게 사용할 지에 대한 고민을 많이 해야 한다.
- 현재 팀 유지 기간
- 1월 7일까지 현재 팀으로 진행 예정
- 최종 프로젝트 발제 후 최종 프로젝트 팀 편성
- 실전 프로젝트 종료 후 일정
- 실전 프로젝트 종료 후 1주 정도 학습 주차 진행 ( 특강 중심 )
- 원하는 도메인, 원하는 분석 결과물을 탐색하는 시간
- 같이 하고 싶은 분들과 많은 이야기를 하고, 팀 구성을 위한 노력을 실시
- 최소 절반은 원하는 분들과 팀이 구성되기를 희망
- 팀 구성을 못 하신 분들을 따로 팀 배정 예정