ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 12/08
    스파르타/TIL(Today I Learned) 2023. 12. 8. 15:41

    오늘의 문제 풀이 시작

    매번 풀번 프로그래머스가 아닌 다른 외국 사이트에서 문제를 풀고 있다

    사이트 이름은  leetcode.com 이다

     

    오늘의 문제  1661. Average Time of Process per Machine
    There is a factory website that has several machines each running the same number of processes. Write a solution to find the average time each machine takes to complete a process

    여기 사이트는 예시가 잘 나오고 설명도 잘 써있어서 이해는 잘 된다.

    그저 내 코딩이 막히는 뿐...

     

    외국 코딩러들이 한 풀이를 봤는데  사람들은 재귀호출을 야무딱지게 하는거같다

    나는 아직 배우면서 재귀함수를 사용해본적이 없기 때문에 문제가 막힌거였다.

     

    activity_type에 보면 end와 start가 있다. 

    두개의 timestamp의 차를 구해서 평균을 구하는것이다.

    한개의 테이블에서는 두개의 enum을 각각 설정할 수 없어서 

    재귀호출을 통해  똑같은 테이블을 만들고

    timestamp와 activity_type만 다르게 하여 두 테이블의 차이를 만든다.

     

    select  a1.machine_id, round(avg(a1.timestamp - a2.timestamp),3) processing_time
    from Activity a1 , Activity A2
    where  a1.machine_id = a2.machine_id 
        and a1.process_id = a2.process_id
        and a1.activity_type = 'end'
        and a2.activity_type = 'start'
    group by a1.machine_id

    문제 : 1280.Students and Examinations

    Write a solution to find the number of times each student attended each exam.

    Return the result table ordered by student_id and subject_name.

     

    풀이를 써서 각 학생이 각 시험에 출석한 횟수를 구하여라. student_id와 subject_name이 주문한 결과표를 반환합니다.

     

    SELECT
        Students.student_id,
        Students.student_name,
        Subjects.subject_name,
        count(Examinations.subject_name) AS attended_exams
     FROM Students
         JOIN Subjects
         LEFT JOIN Examinations
             ON Students.student_id = Examinations.student_id
            AND Subjects.subject_name = Examinations.subject_name
    GROUP BY Students.student_id,
             Subjects.subject_name
    ORDER BY student_id,
             subject_name;

    students와 subjects는 서로 겹치는 데이터가 없다.

    이 상태에서 join.을 하면 두 테이블 합쳐진

    새로운 테이블이 되는데

    새로 태어난 테이블 (이하 new라고 부르겠다.)

    new 테이블과 Examiantion 테이블을 left join을 한다.

    이 둘 사이에는 on 조건으로 연결 될 데이터가 존재하므로

    on으로 두 테이블을 연결한다.

     

     

     

     

     

    https://leetcode.com/problems/students-and-examinations/description/

     

    Students and Examinations - LeetCode

    Can you solve this real interview question? Students and Examinations - Table: Students +---------------+---------+ | Column Name | Type | +---------------+---------+ | student_id | int | | student_name | varchar | +---------------+---------+ student_id is

    leetcode.com

     

     

    '스파르타 > TIL(Today I Learned)' 카테고리의 다른 글

    12/11  (0) 2023.12.11
    12/10 WIL  (0) 2023.12.10
    12/07  (2) 2023.12.07
    12/6  (3) 2023.12.06
    12/5  (0) 2023.12.05
Designed by Tistory.