9월 14일

Yullgiii·2023년 9월 14일
0
post-thumbnail

ADsP

오늘도 여전히 반복적인 학습을 위해 모의고사 1회차를 풀었다.

내일 배움 캠프

2주차 강의 완료에 이어 3주차 강의를 시작해 보려한다!!!!!!!!

SQL

Join: 여러 정보를 한 눈에 보고 싶다면

엄청 많이 사용되는 것!!!!! 대신 무언가의 기준이 되는 것(key값)이 필요하다.
Join의 종류로는

Left Join


여기서 A와 B는 각각의 테이블을 의미!

Inner join(조금 더 쉽고 많이 사용)


교집합을 의미

쿼리가 실행 되는 순서

select * from enrolleds e
inner join courses c
on e.course_id = c.course_id;

위 쿼리가 실행되는 순서: from → join → select

checkins 테이블에 courses 테이블 연결해서 통계치 내보기

Join, Where, Group by 함께 써보기

네이버 이메일을 사용하는 유저의 성씨별 주문건수 세어보기

위 쿼리가 실행되는 순서: from → join → where → group by → select

Inner Join 퀴즈들 풀어보기

1.결제 수단 별 유저 포인트의 평균값 구해보기
(어느 결제수단이 가장 열심히 듣고 있나~)

2.결제하고 시작하지 않은 유저들을 성씨별로 세어보기
(어느 성이 가장 시작을 안하였는가~)

3.과목 별로 시작하지 않은 유저들을 세어보기

4.웹개발, 앱개발 종합반의 week 별 체크인 수를 세어볼까요? 보기 좋게 정리해보기!

5.위 문제에서, 8월 1일 이후에 구매한 고객들만 발라내어 보세요!

inner join 을 한번 더 작성해줘서 연결시켜줌!!!

Left Join (한쪽에는 있는데 한쪽엔 없는걸 가지고 통계내고플때)


NULL 부분은 한쪽은 존재하지만 한쪽은 존재하지 않는 것

EX)7월10일 ~ 7월19일에 가입한 고객 중,
포인트를 가진 고객의 숫자, 그리고 전체 숫자, 그리고 비율을 보고 싶어요!

Union (Order BY 안됨...내부에선 불가)

(
	select '7월' as month, c.title, c2.week, count(*) as cnt from checkins c2
	inner join courses c on c2.course_id = c.course_id
	inner join orders o on o.user_id = c2.user_id
	where o.created_at < '2020-08-01'
	group by c2.course_id, c2.week
  order by c2.course_id, c2.week
)
union all
(
	select '8월' as month, c.title, c2.week, count(*) as cnt from checkins c2
	inner join courses c on c2.course_id = c.course_id
	inner join orders o on o.user_id = c2.user_id
	where o.created_at > '2020-08-01'
	group by c2.course_id, c2.week
  order by c2.course_id, c2.week
)

3주차 마무리 퀴즈

enrolled_id별 수강완료(done=1)한 강의 갯수를 세어보고, 완료한 강의 수가 많은 순서대로 정렬해보기. user_id도 같이 출력되어야 한다.

회고

그렇다 복잡해진다
1,2 주차 내용을 기억하지 않고 그냥듣기만 하면 내가 스스로 학습하는것이 없고 그저 따라할뿐이다
무조건 복습,.....

Java

얄코님의 강의 드디어 객체 지향 프로그램 클래스 쪽으로 들어선다....!!!!

섹션 5

1 클래스의 이해

  • 같은/유사한 형식의 반복되는 코드들
  • 보다 반복을 줄이고, 체계적이고 안정적이게 이 버튼들을 다룰 방법 필요
public class Button {

    char print;
    int space;
    String mode;

    Button (char print, int space, String mode) {
        this.print = print;
        this.space = space;
        this.mode = mode;
    }

    void place () {
        System.out.printf(
                "표시: %c, 공간: %s, 모드: %s%n",
                print,space, mode
        );
    }
}
  • [Main.java]파일과 같은 위치에 생성
  • 클래스 class : 각 버튼이 갖고 있을 속성(들)과 기능(들)을 정의
        Button button1 = new Button('1', 1, "DARK");
        Button buttonPlus = new Button('+', 3, "DARK");
        Button buttonClear = new Button('C', 2, "DARK");

        button1.place();
        buttonPlus.place();
        buttonClear.place();

실행시

💡 클래스 & 인스턴스 - 프랜차이즈 본사 & 매장

  • 서드 이름 없이, 반환 타입(해당 클래스) 뒤로 괄호가 따라옴
  • return을 명시하지 않음 - 해당 클래스 타입의 인스턴스 반환
  • new 연산자와 함께 사용되어 인스턴스를 반환
  • 필수 작성 아님 - 언제나 같은 내용의 인스턴스를 반환할 경우
    - 작성되지 않았을 경우에는 인자 없이 호출 (이전 예제 확인)
    - ⭐️ 코드에 작성하지 않아도 컴파일러가 자동 생성
    - .class 파일에서 확인 가능
    중요
  • 맥: command + N
  • 생성자 선택

⭐️ this - 만들어질 인스턴스를 가리킴

  • intro 메소드 브레이크포인트에서 this 항목 확인
    • nonamethis 를 붙인 것과 같음
  • 메소드 내에서 같은 이름의 변수나 인자가 없다면 식별자는 this 의 필드를 가리킴
  • 같은 이름의 변수나 인자가 있다면 덮어씌워짐
    • 필드에는 this를 붙여 구분
    • 생성자에서 this 를 빼고 실행해 볼 것
    • intro 에서 주석 해제해 볼 것, this 를 사용하여 다시 해 볼 것
  1. 기초 예제들

YalcoChicken.java

public class YalcoChicken {
    int no;
    String name;
    ChickenMenu[] menus;

    YalcoChicken (int no, String name, ChickenMenu[] menus) {
        this.no = no;
        this.name = name;
        this.menus = menus;
    }

    ChickenMenu orderMenu (String name) {
        for (ChickenMenu menu : menus) {
            if (menu.name.equals(name)) { // 🔴
                return menu;
            }
        }
        return null;
    }
}

ChickenMenu.java

public class ChickenMenu {
    String name;
    int price;
    String cook = "fry";

    ChickenMenu (String name, int price) {
        this.name = name;
        this.price = price;
    }

    ChickenMenu (String name, int price, String cook) {
        this.name = name;
        this.price = price;
        this.cook = cook;
    }
}

위의 두가지 클래스를 생성하여 메인에 이용할 준비를 한다
Main.java

				ChickenMenu[] menus = {
                new ChickenMenu("후라이드", 10000),
                new ChickenMenu("양념치킨", 12000),
                new ChickenMenu("화덕구이", 15000, "bake")
        };
        YalcoChicken store1 = new YalcoChicken(3, "판교", menus);

        ChickenMenu order1 = store1.orderMenu("양념치킨");
        ChickenMenu order2 = store1.orderMenu("오븐구이");

코드를 작성하고 디버깅을 실행해보면

이렇게 나오는것을 확인할수있다.

회고

어렵다 역시 어렵다 본격적인 개념에 들어가기 시작하니 강의가 문제가 아니라 내가 이해를 하는것이 가장중요해진다.
그렇기에 확실하게 집고 넘어가지 않으면 더이상의 진도는 의미가 없다고 생각되어 좀더 심화로 알아볼것이다.

(ft.Git....(망할 아직 어렵네))

어제부터 속을 썩이는데 어찌하는지 아직도 잘모르겠다.
좀 쉽다는데 이해가 잘안간다
오늘은 어제 HTML을 업로드 했더니 IntellJ에서 파일명이 다 붉은색으로 뜨길래
업로드를 시켜버렸다 눈에 거슬려서...
이제는 어떻게 작동하는지는 알겠는데
새로운 파일이 추가 되어도 잘 작동할까..?

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글