안경잡이개발자

728x90
반응형

  필자의 경우 다양한 증권사의 HTS나 앱(app)을 이용하여 주식를 거래를 진행하고 있는데, 이번에 한국투자증권에서도 주식 계좌를 개설했습니다. 계좌를 개설하는 방법은 다른 증권사와 유사합니다. 한국투자증권도 비대면(온라인) 증권 계좌 개설 서비스를 제공하며, 신분증 및 계좌 인증을 통해 빠르고 간단하게 증권 계좌를 개설할 수 있습니다.

 

  가장 먼저 한국투자증권 앱을 다운로드 ㄷ합니다. 플레이스토어에 [한국투자증권]을 검색하여, 해당 앱을 설치하면 됩니다. 앱을 설치하여 [열기] 해주면, 가장 먼저 다양한 권한을 허용해 달라는 안내 메시지가 나옵니다. 앱을 원활히 사용하기 위해서는 권한 [허용]을 진행하면 됩니다.

 

 

  이후에 아직 계좌가 없는 사람이라면 [계좌개설] 버튼을 눌러 새롭게 계좌를 만들면 됩니다. 일반적으로 많이 선택하는 옵션은 [국내 주식계좌 + CMA]로, 주식 계좌를 만든 후에는 자유롭게 국내 주식을 사고팔 수 있습니다. 계좌를 개설하기 위해서는 가장 먼저 휴대폰 인증을 통해 실명 확인을 진행합니다. 휴대폰 번호를 입력하고, 인증번호를 입력하면 됩니다.

 

 

  이후에 다음과 같이 계좌 개설에 동의하면 됩니다. 참고로 온라인 평생 우대 수수료, KOSPI 주식 1주 증정 이벤트가 진행 중인데요. 이때 마케팅 수신에 동의해야 주식 1주를 준다고 합니다. 그래서 필자의 경우 마케팅 문자 수신에 동의하고, 이벤트에 참여했습니다. 운 좋으면 삼성전자처럼 비싼 주식을 받을 수도 있을 테니까요.

 


  이제 본격적으로 계좌를 개설하기 위해 본인 인증을 진행합니다. [신분증 인증][계좌 인증]인데요. 신분증을 스마트 폰으로 촬영하여 인증하면 되고, 계좌 인증 또한 본인 소유의 계좌로 1원을 송금받아 인증번호를 입력하는 방식으로 인증을 진행할 수 있습니다.

 

 

 결과적으로 계좌 개설이 완료되었고, 인증 수단을 등록하면 됩니다. 일반적으로 많이 사용되는 것으로는 [간편 비밀번호]가 있습니다. 필자 또한 간편 비밀번호를 인증 수단으로 등록했고, 결과적으로 생성된 주식 계좌 번호를 확인할 수 있었습니다. 

 


  결과적으로 필자는 30분 내외의 시간으로, 순식간에 주식 계좌가 생성되었습니다. 이제 간편 비밀번호를 입력해 로그인을 진행하면 됩니다. 필자의 경우 주식 추첨 이벤트에 참여했기 때문에, 다음과 같이 추첨을 통해 주식을 받을 수 있었습니다. 필자가 받은 주식은 메리츠증권 주식입니다.

 

 

  결과적으로 계좌가 개설되고 난 뒤에는 메인 화면으로 들어간 뒤에, 다음과 같이 [계좌번호]를 확인하고, 해당 계좌번호로 주식 투자를 위한 돈을 입금하면 됩니다. 그러면 [출금 가능금액(예수금)]에 입금된 금액이 출력되는 것을 확인할 수 있습니다. 이렇게 입금된 금액으로 주식 투자를 진행할 수 있습니다.

 

728x90
반응형

Comment +0

728x90
반응형

  공인인증서를 파일 형태로 관리하면 굉장히 편하다. 그냥 공인인증서 파일을 이메일로 보내 놓았다가, 필요할 때 내가 원하는 컴퓨터에서 해당 공인인증서를 등록하여 사용하면 된다.

 

※ 공인인증서(공동인증서) 내보내기 ※

 

  공인인증서(공동인증서)를 내보낼 때는 어떠한 사이트를 이용해도 괜찮다. 예를 들어 농협 인터넷 뱅킹[공인인증센터]에서 내보낼 수도 있고, 키움증권[공인인증센터]에서 내보낼 수도 있다. 어차피 공인인증서(공동인증서)를 관리하는 로직은 동일하기 때문에, 자신의 컴퓨터에 존재하는 공인인증서를 파일 형태로 저장할 수 있다는 점은 동일하다.

 

  예를 들어 [키움증권 인증센터]에 접속하면 다음과 같은 화면을 확인할 수 있다.

 

 

  이후에 다음과 같이 내보내고자 하는 인증서를 선택한 뒤에 인증서 비밀번호를 입력하여 내보내면 된다.

 

 

  이후에 다음과 같이 원하는 경로에 인증서 파일을 내보내면 된다.

 

 

  이러한 공인인증서(공동인증서)는 자신이 자주 사용하는 이메일로 보내 놓으면 나중에 언제든지 다운로드 가능하므로, 편리하게 관리할 수 있다. 필자도 개인적으로 그냥 이메일이나 클라우드 저장소에 넣어 놓고 관리하고 있다.

 

※ 공인인증서(공동인증서) 가져오기 ※

 

  공인인증서를 가져올 때는 마찬가지로 [인증서 가져오기] 버튼을 눌러 가져오면 된다. 자신이 내보냈던 공인인증서 파일을 자신이 원하는 컴퓨터(PC)에 불러와 사용할 수 있다.

 

728x90
반응형

Comment +0

728x90
반응형

  우체국 인터넷뱅킹에서 공동인증서(공인인증서)를 갱신하는 방법은 다음과 같다. 먼저 우체국 인터넷뱅킹에 접속한다.

 

  ▶ 우체국 인터넷뱅킹: https://www.epostbank.go.kr/

 

우체국예금우체국보험

 

www.epostbank.go.kr

 

  가장 먼저 [보안센터]에서 [인증센터] 페이지로 방문한다.

 

 

  이후에 [공동인증서 갱신] 페이지로 이동한다.

 

 

  이후에 자신의 계정 정보를 입력하여 [사용자 확인]을 진행한다.

 

 

  이어서 유효기간을 갱신하고자 하는 인증서를 선택하여, 비밀번호를 입력한다.

 

 

  이어서 계좌번호와 보안카드 번호를 입력한다.

 

 

  결과적으로 해당 인증서에 대해서 갱신을 진행할 수 있다.

 

 

  인증서 비밀번호를 입력하고, 인증서 유효기간 갱신을 완료한다.

 

728x90
반응형

Comment +0

728x90
반응형

  금융인증센터(yessign)에서는 공동인증서(공인인증서)와 관련한 다양한 기능을 제공한다. 대표적으로 공인인증서(공동인증서)의 상세 내용을 확인할 수 있고, 암호를 변경하거나, 공인인증서를 파일로 내보내기할 수 있다. 인증서 관리 페이지는 다음의 경로에서 확인할 수 있다.

 

  ▶ 금융인증센터(yessign) 인증서 관리 페이지

 

yessign 홈페이지 - 인증서 정보관리

 

www.yessign.or.kr

 

※ 인증서 내용보기 ※

 

  페이지에 접속하면 다음과 같이 인증서를 관리할 수 있는 다양한 기능이 존재한다. 여기에서 [인증서 내용보기] 기능을 이용해보자.

 

 

  이후에 인증서 목록이 나온다. 만약 자신이 원하는 인증서의 상세 내용을 확인하고 싶다면, 다음과 같이 [인증서 보기] 버튼을 누르면 된다.

 

 

  이후에 [자세히] 버튼을 누르면, 해당 인증서의 소유자가 누구인지, 어떤 은행(혹은 증권) 사이트에서 공동인증서(공인인증서)를 발급받았는지 확인할 수 있다. 아래 인증서는 키움증권에서 발급받은 것을 알 수 있다.

 

 

※ 인증서를 갱신하고 싶다면? ※

 

  인증서를 일반적으로 유효기간이 1년이기 때문에, 가지고 있는 인증서의 유효기간을 갱신하기 위해서는 [인증서 갱신]을 진행해야 한다.

 

 

  그래서 인증서의 상세 내용을 본 뒤에, 자신이 인증서를 발급받았던 사이트에 방문하여 인증서를 갱신하면 된다.

 

※ 인증서 내보내기 ※

 

  만약 [인증서 내보내기]를 하고 싶다면, 다음과 같이 인증서 내보내기 버튼을 누르면 된다.

 

 

  인증서 암호를 입력한 뒤에 다음과 같이 자신이 원하는 경로에 인증서를 내보내기할 수 있다.

 

728x90
반응형

Comment +0

728x90
반응형

  먼저 [검색] 버튼을 누른다.

 

 

  이후에 자신이 검색하고자 하는 내용을 입력하면 된다.

 

 

  이후에 [필터]에서 연도를 설정하면 된다.

 

728x90
반응형

Comment +0

728x90
반응형

※ 삼성전자 보통주 vs 삼성전자 우선주 ※

 

  삼성전자 (삼성전자 보통주): 일반적으로 말하는 삼성전자 주식이다. 보통주이므로, 주식을 갖고 있는 주주가 회사의 의사결정에 의견을 낼 수 있다. 일반적으로 1주당 하나의 의결권이 부여된다.

 

 

  삼성전자우 (삼성전자 우선주): 보통주와는 다르게 의결권이 없다는 특징이 있다. 하지만 보통주보다 배당률이 높다. 그래서 의결권을 포기하고 배당금을 더 많이 받기 위해 위해 삼성전자 우선주를 구매하는 사람이 많다. 네이버 국어사전에 "우선주"를 검색해 보면 다음과 같이 나온다.

 

 

  마찬가지로 네이버에 "삼성전자 우선주 주가"라고 검색하면 다음과 같은 그림을 확인할 수 있다.

 

 

 

※ 삼성전자 우선주 구매 방법 ※


  삼성전자 우선주를 구매하는 방법은 간단하다. 그냥 증권사 주식 거래 사이트에서 삼성전자 우선주 주식을 매매하면 된다. 키움증권 WTS에서는 다음과 같이 "삼성전자우"라고 검색한 뒤에 매수하면 된다.

 

 

※ 배당금 확인 방법 ※

 

  나중에 배당금이 들어오면 어떻게 확인할 수 있을까? 키움증권을 이용하는 경우 [거래내역] 탭에서 배당금을 확인할 수 있다.

728x90
반응형

Comment +0

728x90
반응형

  포항공대에서 학생회관이나 지곡회관의 회의실을 예약할 때는 POPO를 사용할 수 있다. 나는 포항공대에서 2년을 있었는데, 연구실에만 있다 보니까 회의실 예약하는 방법도 모르고 있었다. 학생회관 대회의실을 포함하여 다양한 회의실에 대하여 경우 동아리 활동을 하지 않는 일반적인 학생들도 예약할 수 있는 것으로 보인다.

 

  ▶ POPO 사이트: http://popo.postech.ac.kr/

 

POPO - 포포

POstenchian's POrtal, POPO 입니다!

popo.postech.ac.kr

 

  접속한 뒤에 로그인한다. 그리고 [장소 예약] 버튼을 눌러 예약 페이지로 들어갈 수 있다.

 

 

  이후에 원하는 장소를 골라 [예약하기] 버튼을 누른다.

 

 

  원하는 날짜와 시간을 설정하여 [예약]을 진행하면 된다.

 

728x90
반응형

Comment +0

728x90
반응형

  PyTorch에서는 ImageFolder 라이브러리를 제공하는데, 다음과 같이 계층적인 폴더 구조에서 데이터셋을 불러올 때 사용할 수 있다. 다음과 같이 각 이미지들이 각 클래스명(class name)을 갖는 폴더 안에 들어가 있는 구조라면, ImageFolder 라이브러리를 이용해 바로 불러올 수 있다.

 

dataset/
    class 0/
        0.jpg
        1.jpg
        ...
    class 1/
        0.jpg
        1.jpg
        ...
    ...
    class 9/
        0.jpg
        1.jpg
        ...


  이러한 ImageFolder 형식을 가지고 있지 않은 데이터셋 예제를 불러와서, ImageFolder 형식에 맞게 변형해 보겠다. 한 번 다음의 데이터셋 예제를 확인해 보자.

 

  ▶ Scene Classification Dataset 예제https://github.com/ndb796/Scene-Classification-Dataset

 

GitHub - ndb796/Scene-Classification-Dataset

Contribute to ndb796/Scene-Classification-Dataset development by creating an account on GitHub.

github.com

 

  기본적으로 Scene Classification Dataset은 25,000개가량의 다양한 자연 경치(scene) 이미지로 구성되어 있다. 이때 각 이미지에 대하여 카테고리(category) 정보가 주어진다. 먼저 다음과 같은 코드로 전체 이미지 데이터를 다운로드한다.

 

# 깃허브에서 데이터셋 다운로드하기
!git clone https://github.com/ndb796/Scene-Classification-Dataset
# 폴더 안으로 이동
%cd Scene-Classification-Dataset

 

  이때 데이터셋 폴더 구성은 다음과 같다.

 

Dataset/
    train-scene classification/
        train/ # 전체 이미지가 담긴 폴더입니다.
            0.jpg
            1.jpg
            2.jpg
            ...
            24333.jpg
            24334.jpg
        train.csv # 학습 이미지마다 클래스(class) 정보가 포함되어 있습니다.
    test_WyRytb0.csv # 최종 테스트(test) 이미지의 번호를 포함하며, 본 실습에서 사용하지 않습니다.

 

 

  장면(scene) 데이터셋은 정확히 24,335개의 다양한 자연 경치(scene) 이미지로 구성되어 있다. 이때 각 이미지는 150 X 150 크기를 가진다. 또한, 총 6개의 클래스(class)로 구성된다. 전체 클래스 목록은 다음과 같다.

 

    0. 빌딩(buildings)
    1. 숲(forests)
    2. 빙하(glacier)
    3. 산(mountains)
    4. 바다(sea)
    5. 거리(street)

 

  이때 다음과 같은 방법으로 학습 이미지의 개수를 확인할 수 있다. 구체적으로 os 라이브러리의 os.listdir()를 이용하여 이미지 폴더에 존재하는 파일 이름을 확인할 수 있다. 예를 들어 다음과 같은 코드로 이미지의 개수를 확인할 수 있다.

 

import os
import pandas as pd


path = 'train-scene classification/'

# 전체 이미지 개수 출력하기
file_list = os.listdir(path + 'train/')
print('전체 이미지의 개수:', len(file_list))

# 학습 이미지 확인하기
dataset = pd.read_csv(path + 'train.csv')
print('학습 이미지의 개수:', len(dataset))
print('학습 이미지별 클래스 정보')
dataset.head()

 

 

  실행 결과는 다음과 같다.

 

 

  이때 클래스별 학습 이미지의 개수를 구하고자 한다면 다음과 같이 할 수 있다.

 

import matplotlib.pyplot as plt
import seaborn as sns

plt.rcParams['figure.figsize'] = (8.0, 6.0) # 그림의 기본 크기 설정

# 각 클래스별 개수 출력
print('클래스 0의 개수:', len(dataset[dataset.label == 0]))
print('클래스 1의 개수:', len(dataset[dataset.label == 1]))
print('클래스 2의 개수:', len(dataset[dataset.label == 2]))
print('클래스 3의 개수:', len(dataset[dataset.label == 3]))
print('클래스 4의 개수:', len(dataset[dataset.label == 4]))
print('클래스 5의 개수:', len(dataset[dataset.label == 5]))

# 각 클래스에 따른 학습 이미지의 개수를 출력하기
fig, ax = plt.subplots(figsize = (10, 4)) # 그림 크기 설정
sns.countplot(x ='label', data=dataset)
plt.xlabel("Class Label")
plt.ylabel("Number of Samples")
plt.show()

 

  실행 결과는 다음과 같다.

 

 

  이때 특정한 이미지를 불러와 화면에 출력하고자 한다면 다음과 같이 할 수 있다. 아래 코드는 첫 번째 이미지를 불러와 화면에 출력하는 코드다.

 

from skimage.transform import resize
from PIL import Image
import numpy as np


img = Image.open(path + 'train/' + file_list[0])
img = np.asarray(img)
img = resize(img, (64, 64, 3))
print('이미지의 해상도:', img.shape)

# 이미지 출력하기
plt.imshow(img)
plt.show()

 

  실행 결과는 다음과 같다.

 

 

  이어서 학습/검증 데이터셋을 나눌 수 있다. 이때 간단히 sklearn 라이브러리 train_test_split()을 이용하면 된다. 예를 들어 학습 이미지 데이터를 8:2 비율로 학습(training)과 검증(validation)으로 나누는 예제는 다음과 같다.

 

from sklearn.model_selection import train_test_split


train_dataset, val_dataset = train_test_split(dataset, test_size=0.2)

print('학습 데이터셋 크기:', len(train_dataset))
print('검증 데이터셋 크기:', len(val_dataset))

 

  실행 결과는 다음과 같다. 이제 결과적으로 데이터셋이 나누어진 것이다.

 

 

  이제 나누어진 데이터셋을 적절한 폴더에 저장하기 위해 다음과 같이 먼저 폴더를 만든다. 클래스 개수가 6개뿐이므로, 간단히 다음과 같이 모든 폴더를 만들 수 있다.

 

!mkdir Scene-Classification-Dataset-Split
!mkdir Scene-Classification-Dataset-Split/train
!mkdir Scene-Classification-Dataset-Split/train/buildings
!mkdir Scene-Classification-Dataset-Split/train/forests
!mkdir Scene-Classification-Dataset-Split/train/glacier
!mkdir Scene-Classification-Dataset-Split/train/mountains
!mkdir Scene-Classification-Dataset-Split/train/sea
!mkdir Scene-Classification-Dataset-Split/train/street
!mkdir Scene-Classification-Dataset-Split/val
!mkdir Scene-Classification-Dataset-Split/val/buildings
!mkdir Scene-Classification-Dataset-Split/val/forests
!mkdir Scene-Classification-Dataset-Split/val/glacier
!mkdir Scene-Classification-Dataset-Split/val/mountains
!mkdir Scene-Classification-Dataset-Split/val/sea
!mkdir Scene-Classification-Dataset-Split/val/street

 

  실행하면 다음과 같이 전체 폴더가 구성되는 것을 확인할 수 있다.

 

 

  이제 ImageFolder 형식에 맞게 이미지를 저장해보자. 모든 이미지는 (64 X 64 X 3) 형식으로 resize하여 저장한다.

 

import time


classes = ['buildings', 'forests', 'glacier', 'mountains', 'sea', 'street']

######### 학습 데이터셋 #########
start_time = time.time() # 시작 시간

# 데이터 정보를 하나씩 확인하며
for index, row in train_dataset.iterrows():
    # 이미지 정보를 배열에 담기
    img = Image.open(path + 'train/' + row['image_name'])
    img = np.asarray(img)
    img = resize(img, (64, 64, 3))
    img = Image.fromarray((img * 255).astype(np.uint8))
    saved = 'Scene-Classification-Dataset-Split/train/' + classes[row['label']] + '/' + str(index) + '.png'
    img.save(saved, 'PNG')

print("소요된 시간(초 단위):", time.time() - start_time) # 실행 시간

######### 검증 데이터셋 #########
start_time = time.time() # 시작 시간

# 데이터 정보를 하나씩 확인하며
for index, row in val_dataset.iterrows():
    # 이미지 정보를 배열에 담기
    img = Image.open(path + 'train/' + row['image_name'])
    img = np.asarray(img)
    img = resize(img, (64, 64, 3))
    img = Image.fromarray((img * 255).astype(np.uint8))
    saved = 'Scene-Classification-Dataset-Split/val/' + classes[row['label']] + '/' + str(index) + '.png'
    img.save(saved, 'PNG')

print("소요된 시간(초 단위):", time.time() - start_time) # 실행 시간

 

  이후에 만들어진 폴더를 압축(.zip)하여 저장한다.

 

!zip -r Scene-Classification-Dataset-Split.zip ./Scene-Classification-Dataset-Split/*
728x90
반응형

Comment +0

728x90
반응형

  저는 Adobe Acrobat Pro DC를 이용하고 있습니다. 자신이 수정하고자 하는 PDF 파일을 Adobe Acrobat Pro DC를 이용해 PDF 파일을 열어줍니다. 저는 간단히 강의 자료를 열어 주었으며, 이후에 [페이지 구성] 버튼을 눌러줍니다.

 

 

  [페이지 구성]을 연 뒤에는 다음과 같이 자신이 원하는 페이지를 선택하여 삽입, 추출, 교체, 삭제 등의 작업을 수행할 수 있습니다.

 

 

  PDF 파일의 수정이 완료되면 다음과 같이 [파일] - [다른 이름으로 저장]을 눌러 저장할 수 있습니다.

 

728x90
반응형

Comment +0

728x90
반응형

  세 개의 릴레이션이 있는 상황을 가정합시다. 실습으로 다루고자 하는 데이터베이스사원(Employee), 회사(Company), 소속(Affiliation) 세 가지 테이블로 구성됩니다. 그 세부적인 정보는 다음과 같습니다.

 

※ 사원(Employee) 릴레이션 ※

 

  사원의 이름, 거주 도시 정보를 포함하고 있습니다.

 

Employee_ID Employee_Name Employee_City
1 Seo 청주
2 Chung 서울
3 Lee 인천
4 Kim 대전
5 Park 서울
6 Moon 서울

 

※ 회사(Company) 릴레이션 ※

 

  회사의 이름, 회사가 위치한 도시 정보를 포함하고 있습니다.

 

Company_Name Company_City
SK 인천
LG 청주
삼성 서울

 

※ 소속(Affiliation) 릴레이션 ※

 

  사원의 번호, 회사의 이름, 연봉 정보를 포함하고 있습니다. 즉, 어떠한 사원이 어떠한 회사에서 일을 하고 있는지에 대한 정보를 담고 있습니다.

 

Employee_ID Company_Name Pay
1 SK 10000
2 LG 900
3 삼성 30000
4 삼성 50000
5 삼성 100
6 LG 200

 

※ 데이터베이스 구축하기 ※

 

  다음과 같이 데이터베이스를 생성하고, 테이블을 구축하여 기본적인 데이터를 삽입할 수 있습니다.

 

/* 사원(Employee) 테이블 */
CREATE TABLE Employee(
    Employee_ID INT PRIMARY KEY,
    Employee_Name TEXT,
    Employee_City TEXT
);

INSERT INTO Employee VALUES (1, 'Seo', '청주');
INSERT INTO Employee VALUES (2, 'Chung', '서울');
INSERT INTO Employee VALUES (3, 'Lee', '인천');
INSERT INTO Employee VALUES (4, 'Kim', '대전');
INSERT INTO Employee VALUES (5, 'Park', '서울');
INSERT INTO Employee VALUES (6, 'Moon', '서울');

/* 회사(Company) 테이블 */
CREATE TABLE Company(
    Company_Name TEXT PRIMARY KEY,
    Company_City TEXT
);

INSERT INTO Company VALUES ('SK', '인천');
INSERT INTO Company VALUES ('LG', '청주');
INSERT INTO Company VALUES ('삼성', '서울');

/* 소속(Affiliation) 테이블 */
CREATE TABLE Affiliation(
    Employee_ID INT,
    Company_Name TEXT,
    Pay INT
);

INSERT INTO Affiliation VALUES (1, 'SK', 10000);
INSERT INTO Affiliation VALUES (2, 'LG', 900);
INSERT INTO Affiliation VALUES (3, '삼성', 30000);
INSERT INTO Affiliation VALUES (4, '삼성', 50000);
INSERT INTO Affiliation VALUES (5, '삼성', 100);
INSERT INTO Affiliation VALUES (6, 'LG', 200);

 

Q1. 회사명이 'LG'인 회사에서 일하는 모든 사원의 이름과 거주하는 도시들을 출력합니다.

SELECT e.Employee_Name, e.Employee_City
    FROM Employee as e, Affiliation as a
    WHERE e.Employee_ID == a.Employee_ID
        AND a.Company_Name = "LG";

 

Q2. 소속한 회사가 위치한 도시와 다른 도시에 거주하는 모든 사원의 이름, 소속 회사 이름, 소속 회사의 도시, 사원이 거주하는 도시를 출력합니다.

SELECT e.Employee_Name, c.Company_Name, c.Company_City, e.Employee_City
    FROM Employee as e, Company as c, Affiliation as a
    WHERE e.Employee_ID == a.Employee_ID
        AND c.Company_Name == a.Company_Name
        AND e.Employee_City != c.Company_City;

 

Q3. 각 회사별로 회사 이름과 사원의 수, 평균 월급을 출력합니다.

 

  간단한 버전은 다음과 같습니다.

SELECT a.Company_Name, COUNT(a.Employee_ID), AVG(a.Pay)
    FROM Affiliation as a
    GROUP BY a.Company_Name;

  조금 더 어렵게 작성 소스코드 버전은 다음과 같습니다.

SELECT c.Company_Name, COUNT(e.Employee_ID), AVG(a.Pay)
    FROM Employee as e, Company as c, Affiliation as a
    WHERE e.Employee_ID == a.Employee_ID
        AND c.Company_Name == a.Company_Name
    GROUP BY a.Company_Name;

 

Q4. 각 회사별로 소속 사원들의 평균 월급보다 높은 월급을 받는 종업원들의 사원의 번호, 회사 이름, 월 급여, 해당 회사의 평균 월급을 출력합니다.

SELECT a.Employee_ID, a.Company_Name, a.Pay, c_sum.Pay
    FROM Affiliation as a, (SELECT t.Company_Name, AVG(t.Pay) as Pay FROM Affiliation as t GROUP BY t.Company_Name) as c_sum
    WHERE a.Company_Name == c_sum.Company_Name
        AND a.Pay > c_sum.Pay;

 

Q5. 'LG'의 (하나 혹은 여러) 사원보다 월급을 많이 받는 모든 사원들의 사원의 번호, 회사 이름, 월 급여를 출력합니다.

SELECT a.Employee_ID, a.Company_Name, a.Pay
    FROM Affiliation as a, (SELECT MIN(t.Pay) as Pay FROM Affiliation as t WHERE t.Company_Name == "LG") as c_sum
    WHERE a.Pay > c_sum.Pay;

혹은 다음과 같이 할 수 있습니다.

SELECT a.Employee_ID, a.Company_Name, a.Pay
    FROM Affiliation as a
    WHERE a.Pay > (SELECT MIN(t.Pay) as Pay FROM Affiliation as t WHERE t.Company_Name == "LG");

728x90
반응형

Comment +0