전체 글

· Algorithm
▶ SQL 코딩 테스트 연습 > GROUP BY > 입양 시각 구하기(2) 1.테이블 정보 2.문제 보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다. 3.요구사항 분석 및 SQL문 1) 1차 시도 - 오답 -- 조회 : 시간, 입양 횟수 -- 그룹 : 시간별 (0 - 23) -- 정렬 : 시간순 SELECT TO_CHAR(DATETIME, 'HH24') AS 시간 ,COUNT(DATETIME) AS 입양횟수 FROM ANIMAL_OUTS GROUP BY TO_CHAR(DATETIME, 'HH24') HAVING TO_CHAR(DATETIME,..
· Algorithm
[ 코디테스트 연습 > 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,..
· Algorithm
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은 비교할 대상이 없어서 생긴 오류인 ..
· Algorithm
▶테이블 정보 ▶문제 동물 보호소에 들어온 모든 동물의 아이디와 이름, 보호 시작일을 이름 순으로 조회하는 SQL문을 작성해주세요. 단, 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저 보여줘야 합니다. ▶SQL문 SELECT ANIMAL_ID ,NAME ,DATETIME FROM ANIMAL_INS ORDER BY NAME, DATETIME DESC 2개의 정렬기준을 적용하기 위해 ORDER BY절에 정렬 기준 컬럼을 2개 적었다. 우선 적용할 기준 컬럼명1 (이름 = NAME) 을 앞에 적고 오름차순이 디폴트이므로 ASC는 생략. 이름 순으로 정렬 한 다음 적용할 정렬기준 컬럼명2 (보호 시작일 = DATETIME) 을 적었다. 문제에서 나중에 들어온 동물을 먼저 보여주라는 요구가 있어서..
· Tool
1. 객체 선택 1) 선택 툴바 활용 상단에 선택툴바가 안 보이면 상단메뉴 우클릭 - 선택툴바로 사용 할 수 있다. ┌ 객체 선택 : 활성화 한 뒤 원하는 영역을 클릭하면 노란색으로 선택된다. 다중선택은 Shift + 클릭. ├ 표현식 선택 : 삼각형을 누르면 다양한 모드가 있지만 표현식이 제일 편한 것 같다. └ 전체 해제 : 전체 선택 해제 기능. ▶표현식 선택 예시 ( substr : 문자열 자르기) Substr 함수를 사용해 SIG_CD 속성의 맨 앞 2글자가 30인 객체만 선택했다. 객체 선택을 클릭한 뒤 객체로 확대를 누르면 해당 맵으로 화면이 이동한다. QGIS에서 표현식을 사용할 때 속성명은 큰 따옴표로 감싸주어야한다 문자열은 작은따옴표. SIG_CD(시도코드)가 30으로 시작하는 대전 객..
· Tool
▶ 레이어 조인 >> 레이이 우클릭 - 결합 - 플러스 아이콘 클릭 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 절) ▶ 결합필드와 대상필드가 일치하지 않을 때 두 레이어를 조인 하고 싶은데..
· SQL
▶문법 UPDATE 타겟테이블 AS A SET 타겟컬럼 = B.조회할 테이블 컬럼 FROM 조회할 테이블 AS B 평소에 사용하는 UPDATE문처럼 WHERE 절 적용도 가능하다. PostgresSQL 특성인지 현재 디비버 세팅 문제인지 모르겠으나 컬럼에 별칭을 붙일 때 AS를 써야 적용된다. 마이바티스나 아이바티스 사용시에도 같은 이슈가 있었는데, 조금 번거롭더라도 AS는 생략하지 않는 습관을 들여야겠다.
· SQL
▶ 시퀀스(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; ▶ 시퀀스 수정 예시 SQL nextval() 사용 시 적용되는 값 SETVAL('시퀀스명'..
· Tool
>> 레이어 우클릭 - 속성 - 심볼 - 분류값 사용 값 옆에 E 모양 누르면 표현식(쿼리)으로 조건을 설정 할 수 있음 sig_cd(시군구코드) 컬럼을 서브스트링으로 잘라서 색상을 다르게 설정 해 봄 범례는 속성 이름이라고 생각하면 될 듯 ==================== 속성테이블 - 연필모양 누르면 편집 모드 속성테이블 - 필드계산기 누르면 다양한 함수들을 사용 할 수 있음 (db 적용하려면 편집모드로 가서 저장해야 커밋 됨) 그런데 여기서 update 하면 DB에서 직접 쿼리 치는 것 보다 오오오오오오래걸림 ==================== 공간데이터 없는 테이블을 가져오려면 저 항목 체크해야 함!! 이번에는 법정동 테이블 사용해서 조인 할 예정
파란코딩
Coding Blue