[ 코디테스트 연습 > GROUP BY > 입양 시각 구하기 (1) ] 1. 테이블 정보 2. 문제 보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다. 3. 요구사항 분석 및 SQL문 -- 조회 : 입양시간, 입양횟수 -- 그룹 : 시간대별 -- 정렬 : 시간대 오름차순 SELECT TO_CHAR(DATETIME, 'HH24') AS ADP_HOUR , COUNT(DATETIME) AS ADP_CNT FROM ANIMAL_OUTS GROUP BY TO_CHAR(DATETIME, 'HH24') HAVING TO_CHAR(DATETIME,..
SUM, MAX, MIN > 중복 제거하기 ▶테이블 정보 ▶문제 동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다. ▶SQL문 SELECT COUNT(DISTINCT(NAME)) AS 이름 FROM ANIMAL_INS WHERE NAME IS NOT NULL >> COUNT 함수에 DISTINCT (중복제거 기준 컬럼명) 을 적었다 >> WHERE 절에 NAME != NULL 을 써서 오류가 났다. 비교연산자 ( != ) 는 NULL에 사용 할 수 없기 때문에 논리연산자 ( IS NOT )를 사용해야 한다고 한다 NAME 컬럼의 값을 비교하는 쿼리인데 NULL은 비교할 대상이 없어서 생긴 오류인 ..
▶테이블 정보 ▶문제 동물 보호소에 들어온 모든 동물의 아이디와 이름, 보호 시작일을 이름 순으로 조회하는 SQL문을 작성해주세요. 단, 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저 보여줘야 합니다. ▶SQL문 SELECT ANIMAL_ID ,NAME ,DATETIME FROM ANIMAL_INS ORDER BY NAME, DATETIME DESC 2개의 정렬기준을 적용하기 위해 ORDER BY절에 정렬 기준 컬럼을 2개 적었다. 우선 적용할 기준 컬럼명1 (이름 = NAME) 을 앞에 적고 오름차순이 디폴트이므로 ASC는 생략. 이름 순으로 정렬 한 다음 적용할 정렬기준 컬럼명2 (보호 시작일 = DATETIME) 을 적었다. 문제에서 나중에 들어온 동물을 먼저 보여주라는 요구가 있어서..
1. 객체 선택 1) 선택 툴바 활용 상단에 선택툴바가 안 보이면 상단메뉴 우클릭 - 선택툴바로 사용 할 수 있다. ┌ 객체 선택 : 활성화 한 뒤 원하는 영역을 클릭하면 노란색으로 선택된다. 다중선택은 Shift + 클릭. ├ 표현식 선택 : 삼각형을 누르면 다양한 모드가 있지만 표현식이 제일 편한 것 같다. └ 전체 해제 : 전체 선택 해제 기능. ▶표현식 선택 예시 ( substr : 문자열 자르기) Substr 함수를 사용해 SIG_CD 속성의 맨 앞 2글자가 30인 객체만 선택했다. 객체 선택을 클릭한 뒤 객체로 확대를 누르면 해당 맵으로 화면이 이동한다. QGIS에서 표현식을 사용할 때 속성명은 큰 따옴표로 감싸주어야한다 문자열은 작은따옴표. SIG_CD(시도코드)가 30으로 시작하는 대전 객..
▶ 레이어 조인 >> 레이이 우클릭 - 결합 - 플러스 아이콘 클릭 QIGS는 LEFT OUTER JOIN 만 지원하며, 조건문에 함수를 사용 할 수 없기 때문에 완전히 일치해야 하는 것 같다. 쿼리문으로 치환해보면 아래와 같다. SELECT CL.CTPRVN_NM FROM CTRVN CTR LEFT OUTER JOIN COM_LEGALDONG CL ON CTR.CTPRVN_CD = CL.CTPRVN_CD ┌ 결합할 레이어 : JOIN 테이블명 ├ 결합 필드 : JOIN 조건 (JOIN할 테이블 컬럼 / CL ) ├ 대상 필드 : JOIN 조건 (FROM절 테이블 컬럼 /CTR ) └ 결합된 필드 : 조회할 컬럼 (SELECT 절) ▶ 결합필드와 대상필드가 일치하지 않을 때 두 레이어를 조인 하고 싶은데..
▶ 시퀀스(Sequence)시퀀스 생성CREATE SEQUENCE 시퀀스명시퀀스 다음값 (+1 증가)NEXTVAL('시퀀스명')시퀀스 현재값CURRVAL('시퀀스명')시퀀스 수정SETVAL('시퀀스명', 시퀀스값, [TRUE/FALSE])시퀀스 삭제DROP 시퀀스명SEQ_NAME오라클에서는 시퀀스명.nextval()로 사용했었는데 Postgres는 문법이 다르다.이걸 몰라서 한참 헤맸는데 다음에 참고할 수 있도록 기록해둬야겠다 ▶ 시퀀스 생성 예시CREATE SEQUENCE 스키마.시퀀스명MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1 NO CYCLE; ▶ 시퀀스 수정 예시SQLnextval() 사용 시 적용되는 값SETVAL('시퀀스명', 1, FALSE)1SE..
>> 레이어 우클릭 - 속성 - 심볼 - 분류값 사용 값 옆에 E 모양 누르면 표현식(쿼리)으로 조건을 설정 할 수 있음 sig_cd(시군구코드) 컬럼을 서브스트링으로 잘라서 색상을 다르게 설정 해 봄 범례는 속성 이름이라고 생각하면 될 듯 ==================== 속성테이블 - 연필모양 누르면 편집 모드 속성테이블 - 필드계산기 누르면 다양한 함수들을 사용 할 수 있음 (db 적용하려면 편집모드로 가서 저장해야 커밋 됨) 그런데 여기서 update 하면 DB에서 직접 쿼리 치는 것 보다 오오오오오오래걸림 ==================== 공간데이터 없는 테이블을 가져오려면 저 항목 체크해야 함!! 이번에는 법정동 테이블 사용해서 조인 할 예정
▶부모 + 자식클래스 >> 부모클래스 person >> 자식클래스 Worker / Student >> Student의 자식클래스 HighStudent ▶ 강좌 클래스 >> 배열 선언은 Type [ ] 배열명 이라서 제너릭 배열 가능한듯? >> 와일드카드 시도해보니까 앞에 제너릭 기호를 넣을 수 없어서 적용 할 수 없음 ▶수강정보 조회 메서드 >> 모든 강좌 : 제한 X >> 학생 강좌 : 학생 + 학생의 자식 클래스만 (고등학생) >> 워커 강좌 : 근로자 + 근로자의 부모 클래스만 (일반인) ▶메인 메서드 >> 학생 강좌 조회() 는 부모 클래스 일반인 불가 >> 학생 강좌 조회() 는 형제 클래스 직장인 불가 >> 직장인 강좌 조회()는 형제 클래스 학생 불가 >> 직장인 강좌 조회()는 ..
2021-06-30 kr.or.ddit.basic /T03_GenericMethodTest 1. 제너릭 메서드 선언 방법 : pulic 리턴타입 메서드명 (매개변수=파라미터) 제너릭 클래스가 아니어도(일반클래스) 제너릭 메서드 사용 가능 ▶ 제너릭 메서드 사용 예시 2. 제한된 파라미터 타입 제네릭에 extends 를 지정해서 해당 클래스/메서드 + 그 자손만 올 수 있도록 제한을 건다 super는 불가능. 상속만. >> Number 혹은 Number의 자식 클래스라면, doubleValue() 를 사용 할 수 있을테니까 extednds Number라고 설정한 것. >> Util2.Compare() 는 Number 혹은 그 자손만 쓸 수 있음 >> String 클래스는 Number를 상속받지 않았으므로 ..