TIL(Today I Learned) - 오늘의 공부

  1. [왕초보] 웹개발 종합반 5주차를 수강했다!

    • FireBase를 이용한 웹사이트 정보 저장을 실습과 함께 복습을 하였다.

    • GitHub를 이용해 웹페이지를 배포하는 방법도 다시금 복습하게 되었다. (이 블로그 처럼)

    • FireBase의 한계점과 사용 시 유의할 점 등들을 배울 수 있엇다!

  2. 노션 퀘스트 SQL 실전! 과제 마무리!

    • 오늘은 어제 HAVING 을 이용하여 1순위를 정하는 방법을 알아내어 쉽게 과제들을 마칠 수 있엇다.

    • 테이블 2개 이상을 연결하여 사용하는 방법을 알게 되었다.

TIL(Today I Learned) - 학습 과정 중 특이사항

  • 오늘 강의나 노션 퀘스트를 진행하는데 너무 순조로워서, 이대로 가면 개인 학습을 마치고
    다음 주 부턴 팀원끼리 모여서 무엇을 할 지 토론을 할 것 같다.

과제제출

Lv.4 가장 높은 월급을 받는 직원은?

/*Lv.4 가장 높은 월급을 받은 직원은?*/
-- 1.
SELECT  e.Name
        , e.Department 
        , e.Salary 
        , a.Top_Earner
        , a.Top_Salary
FROM employees e
        LEFT JOIN 
(
SELECT  Department 
        , Name Top_Earner
        , MAX(Salary) Top_Salary
FROM employees
GROUP BY 1, 2
HAVING (Department, MAX(Salary)) IN
(
SELECT Department 
        , MAX(Salary)
FROM  employees
GROUP BY 1
) 
) a
        ON e.Department = a.Department 

-- 2.
SELECT Department
        , AVG(Salary) Avg_Salary
FROM  employees 
GROUP BY 1 
ORDER BY 2 DESC
LIMIT 1

Lv.5 가장 많이 팔린 품목은?

/*Lv.5 가장 많이 팔린 품목은?*/
-- 1.
SELECT c.CustomerName 
        , SUM(p.Price*o.Quantity) TotalAmount
        , COUNT(1) OrderCount
FROM  customers c 
        LEFT JOIN orders o 
                ON c.CustomerID  = o.CustomerID 
        LEFT JOIN products p 
                ON o.ProductID = p.ProductID 
GROUP BY 1

-- 2.
SELECT p.Category Category
        , p.ProductName Top_Product 
        , SUM(o.Quantity) TotalSold
FROM  orders o 
        LEFT JOIN products p 
                ON o.ProductID = p.ProductID
GROUP BY 1,2
HAVING (p.Category, SUM(o.Quantity)) IN
(
SELECT  Category
        , MAX(Sum_Qu)
FROM
        (
        SELECT p.ProductName
                , p.Category 
                , SUM(o.Quantity) Sum_Qu
        FROM  orders o 
                LEFT JOIN products p 
                        ON o.ProductID = p.ProductID
        GROUP BY 1, 2
        ) a
GROUP BY 1
)

Lv.5 예산이 가장 큰 프로젝트는?

/*Lv.5 예산이 가장 큰 프로젝트는?*/
-- 1.
SELECT Name 
        , Department 
        , MAX(Salary)
FROM employees
GROUP BY 1,2
HAVING (Department, MAX(Salary)) IN
(
SELECT  Department
        , MAX(Salary)
FROM employees
GROUP BY 1
)

-- 2.
SELECT  e.Name 
        , p.ProjectName 
        , p.Budget 
FROM  employees e 
        LEFT JOIN employeeproject ep
                ON e.EmployeeID  = ep.EmployeeID 
        LEFT JOIN projects p
                ON ep.ProjectID = p.ProjectID 
HAVING p.Budget > 10000