WITH total_march AS (
SELECT
sales_date
, product_id
, user_id
, sales_amount
FROM
online_sale
WHERE
DATE_FORMAT(sales_date,'%Y%m') = 202203
UNION ALL
SELECT
sales_date
, product_id
, NULL AS user_id
, sales_amount
FROM
offline_sale
WHERE
DATE_FORMAT(sales_date, '%Y%m') = 202203
)
SELECT
DATE_FORMAT(sales_date, '%Y-%m-%d') AS sales_date
, product_id
, user_id
, sales_amount
FROM
total_march
ORDER BY
sales_date
, product_id
, user_id
;
→ 전에 푼 거랑 비교했을 때 WHERE절 DATE_FORMAT 쓰는 것, ORDER BY절 적는 것만 달라졌음
WITH project_employee AS (
SELECT
project_id
, COUNT(*) AS cnt
, SUM(experience_years) AS total_exp
FROM
project p
LEFT JOIN employee e
USING(employee_id)
GROUP BY
project_id
)
SELECT
project_id
, ROUND(total_exp / cnt, 2) AS average_years
FROM
project_employee
;
→ 이렇게 적고 나니 그냥 AVG 써도 되겠다는 생각이 떠오름
SELECT
p.project_id
, ROUND(AVG(e.experience_years),2) AS average_years
FROM
Project AS p
LEFT JOIN Employee AS e
USING(employee_id)
GROUP BY
p.project_id
;
select p.project_id, ROUND(AVG(e.experience_years),2) as average_years
from employee e inner join project p on p.employee_id=e.employee_id
group by p.project_id
→ employee 테이블에 있는 experience_years만 더할 것이기 때문에 INNER JOIN으로도 충분하다고 함
def solution(s):
answer = ''
return answer.join(sorted(s, reverse=True))
→ 입출력 예
s | return |
---|---|
"Zbcdefg" | "gfedcbZ" |
문자열도 대소비교가 가능하니까 뭔가 컴퓨터가 알파벳 순서대로 숫자를 지정해 둔 게 아닐까 하는 생각이 들었음
입출력 예에 나온 알파벳 가지고 ord(Z)와 ord(g)를 해봤는데 각각 90, 103이 나왔음
ord(A)는 65인 걸 보니 대문자 A가 가장 작은 숫자 → 소문자 z가 가장 큰 숫자인 것 같아서 이걸 이용하면 뭔가 풀리지 않을까 생각했음
문자열도 sort를 할 수 있나 찾아봤는데 sorted
함수가 있어서 이걸
is
연산자는 객체의 고유한 id 번호를 확인>>> id(1234567)
4391252976
1 == 1.0
의 결과값은 True1 is 1.0
1과 1.0은 같은 숫자를 의미하지만, 타입도 다르고 다른 객체이기 때문에 is 연산을 통해 비교한 결과값은 False