24.12.16에 적었어어야 했던 것
QCC 윈도우 함수
SELECT CityName,
CountryName,
Continent,
Poplations
FROM (
SELECT c.Name AS CityName,
co.Name AS CountryName,
co.Continent AS Continent,
c.Population AS Poplations,
ROW_NUMBER() over(PARTITION BY co.Continent ORDER BY c.Population desc) AS z
FROM city c JOIN country co ON c.CountryCode =co.Code) a
WHERE z=1
ORDER BY 4 DESC;
각 대륙에서 인구가 가장 많은 도시 => over(PARTITION BY co.Continent(각 대륙에서) ORDER BY c.Popaulation desc (인구가 가장 많은 도시) / 테이블을 조인했기 때문에 각 테이블에서 컬럼을 가져와 사용 가능.
윈도우 함수라서 되는 거라고 생각했는데 지금 보니까 ORDER BY도 되긴 할 듯?..
PRTITION BY와 ORDER BY 차이
id | id_2 | value |
1 | 101 | 10000 |
2 | 101 | 30000 |
3 | 104 | 20000 |
4 | 104 | 50000 |
ORDER BY | PARTITION BY |
기준이 되는 컬럼 외에는 출력하지 못 하고, 그룹핑이 되면 테이블이 잘림. | 기준이 되는 컬럼말고도 출력이 가능하고, 계산값 컬럼이 따로 생성됨. 파티션으로 구별하면 테이블이 잘리지 않고 해당 기준점이 되는 파티션과 같은 값이면 값이 복제가 된다. |
=> 윈도우에서 전체 테이블에 영향을 주지 않는다는 말은 group핑 되는 테이블도 출력이 가능하고, group핑이 되었더라도 하나로 묶지 않기 때문임. ORDER BY 하면 윈도우 함수나 GROUP BY나 똑같이 기준점을 기준으로 정렬됨. 당연히... 영향을 미치겠지......... 나 원 참....
윈도우 함수 실행 순서
PARTITION BY -> ORDER BY -> 그 뭐냐..그 범위 정하는 거.. 그 뭐라하냐? 그.. 그거.. 암튼..그거다 -> 윈도우 함수(RANK())
코드카타
def solution(n):
b=[]
for a in range(1,n+1):
if n%a==1:
b.append(a)
return min(b)
python에서 리스트에 값을 저장할 때는 리스트명.append()이라는 메소드를 사용함!!!!!!
b=a 이래놓고 왜 안 되지... 이러고 있었음. 어이 없을 무
PYTHON 알면 좋고~ 모르면 쩔수~ (지금은..)
컴프리헨션
[표현식 for 항목 in interable if 조건문]
그냥 반복문 | 컴프리헨션 |
=> 아 왜 컴프리헨션은 i=i*x이 안 되는지 안 물어봤네... []로 묶어줘서 그런 거 같기도 하고
lambda : 한줄로 함수를 만들고 싶을 때
add = lambda x,y : x+y
filter(조건 함수, 반복 가능한 데이터) | map (함수, 반복 가능한 데이터) |
조건에 따라 한수를 출력 | 그냥 함수를 출력 함수 안에 if를 넣으면 filter과 같은 역할 |
golb : 파일 경로를 찾아줌 golb.golb()
split: 어떠한 문자를 기준으로 구분 가능 / rsplit 오른쪽 값이 기준
데코레이션 : 함수 앞 뒤로 출력 하고 싶을 떄 쓰는 함수
__int__는 초기값을 설정해주기 위해서 사용. 없어도 오류가 나지 않지만, 설정해주면 좋음.