본문 바로가기

컬럼 또는 전체 테이블의 행수 구하기 (count 함수)

count 함수를 사용하면 지정된 컬럼 또는 테이블에 저장된 데이터의 행수를 계산 할 수 있다.

컬럼명을 지정한 경우에는 컬럼에 저장된 값 중 NULL 데이터를 제외한 행 수를 돌려준다.

별표(*)를 지정한 경우에는 테이블의 행 수를 돌려준다.

 GROUP BY 절을 사용하는 경우에는 그룹별로 행 수를 돌려준다.

count(컬럼명)

 

 

예시 정리

CREATE TABLE user (id INTEGER, name TEXT, address TEXT, gender TEXT);

INSERT INTO user values (1, 'devkuma', 'Seoul', 'Man');
INSERT INTO user values (2, 'kimkc', 'Busan', 'Woman');
INSERT INTO user values (3, 'arikuma', 'Suwan', 'Man');
INSERT INTO user values (4, 'happykuma', NULL, 'Man');
INSERT INTO user values (5, 'raccoon', 'Seoul', 'Woman');

 

SELECT COUNT(name), COUNT(address) 
FROM user;
SELECT COUNT(*) 
FROM user;
SELECT gender, COUNT(*) 
FROM user 
GROUP BY gender;

 

 

 

컬럼 값의 합계 구하기 (sum 함수, total 함수)

 

sum 함수 및 total 함수를 사용하면 지정된 컬럼에 저장된 값의 합계를 구할 수 있습니다.

 

sum(컬럼명)
total(컬럼명)

 

 

예시 정리

CREATE TABLE store (address TEXT, sales);
INSERT INTO store VALUES ('Seoul', NULL);

 

현재 데이터는 한건이고, sales 열의 값은 NULL로 되어 있다.

NULL만 저장되어 있는 경우에 sum 함수는 NULL을 반환하지만 total 함수는 0.0를 반환한다.

SELECT SUM(sales), TOTAL(sales) 
FROM store;

 

 

데이터 추가

INSERT INTO store VALUES ('Busan', 450);
INSERT INTO store VALUES ('Daejeon', 380);
INSERT INTO store VALUES ('Seoul', 95);

 

 

컬럼에 있는 값이 정수만 있을 때, sum 함수는 결과를 정수로 반환하지만,

total 함수는 결과를 항상 부동 소수점 숫자로 반환한다.

SELECT SUM(sales), TOTAL(sales) 
FROM store;

 

 GROUP BY 절을 사용하여 address별로 sum 함수, total 함수를 사용하여 합계를 구합니다.

SELECT address, SUM(sales), TOTAL(sales) 
FROM store 
GROUP BY address;

 

 

 

컬럼 값의 평균값 구하기 (avg 함수)

avg 함수를 사용하면 지정된 열에 저장된 값의 평균을 구할 수 있다. 

 

avg(컬럼명)

 

 

예시 정리

CREATE TABLE user (name TEXT, point INTEGER, gender TEXT);
INSERT INTO user VALUES ('dekuma', 72, 'Man');
INSERT INTO user VALUES ('kimkc', 94, 'Woman');
INSERT INTO user VALUES ('araikuma', 58, 'Woman');
INSERT INTO user VALUES ('happykuma', 82, 'Man');

 

point 컬럼 값의 평균을 구한다.

SELECT AVG(point) 
FROM user;

 

 gender 컬럼마다 그룹화하여 평균을 구해 본다.

SELECT gender, AVG(point) 
FROM user 
GROUP BY gender;

 

 

NULL 및 문자열이 저장된 경우

 

NULL이 포함된 경우에는 그 데이터는 제외하고 계산이 이루어 진다.

INSERT INTO user VALUES ('raccoon', NULL, 'Man');
SELECT AVG(point) FROM user;

 

문자열이 저장된 경우에는 값은 0으로 계산된다. 

INSERT INTO user VALUES ('mykuma', 'NODATA', 'Woman');
SELECT AVG(point) 
FROM user;

 

 

 

컬럼 값의 최대값과 최소값 구하기 (max 함수, min 함수)

 

max 함수를 사용하면 지정한 컬럼에 저장된 최대 값을 구할 수 있다.

또한 min 함수를 사용하면 지정한 컬럼에 저장된 최소값을 구할 수 있다. 

 

max(컬럼명)


min(컬럼명)

min(컬럼명)

 

예시 정리

CREATE TABLE user (name TEXT, point INTEGER, gender TEXT);
INSERT INTO user VALUES ('dekuma', 72, 'Man');
INSERT INTO user VALUES ('kimkc', 94, 'Woman');
INSERT INTO user VALUES ('araikuma', 58, 'Woman');
INSERT INTO user VALUES ('happykuma', 82, 'Man');

 

max 함수와 min 함수를 사용하여 point 컬럼 값의 최대 값과 최소값을 구한다.

SELECT MAX(point), MIN(point) 
FROM user;

 

gender 컬럼마다 그룹화하여 최대 값과 최소값을 구한다.

SELECT gender, MAX (point), MIN (point) 
FROM user 
GROUP BY gender;

 

 

 

문자열의 문자수 반환 (length 함수)

 

length 함수를 사용하면 문자열에 저장된 문자 수를 구할 수 있다. 

 

length(문자열)

 

 

예시 정리

CREATE TABLE product (id INTEGER, name_eng TEXT, name_kor TEXT);
INSERT INTO product VALUES (1, 'Apple', '사과');
INSERT INTO product VALUES (2, 'Car', '자동차');
INSERT INTO product VALUES (3, 'Television', '텔레비전');
INSERT INTO product VALUES (4, 'Mobile', '휴대');

 

lenght 함수를 사용하여 name_eng 컬럼과 name_kor 컬럼에 저장되는 값의 문자 수를 가져온다.

SELECT name_eng, LENGTH(name_eng), name_kor, LENGTH(name_kor) 
FROM product;

 

 

 

문자열을 다른 문자열로 치환 (replace 함수)

 

replace() 함수를 사용하면 문자열에 저장된 일부 문자열을 다른 문자열로 치환한 값을 얻을 수 있다.

첫 번째의 인수로 지정된 문자열에 저장된 두 번째 인수로 지정한 문자열을 세 번째 인수에 지정된 문자열로 치환한 값을 가져온다. 

 

replace(대상 문자열, 치환되는 문자열, 바꿀 문자열)

 

 

예시 정리

CREATE TABLE report (id INTEGER, name TEXT);
INSERT INTO report VALUES (1, 'report_2018_Seoul');
INSERT INTO report VALUES (2, 'report_2018_Daejeon');
INSERT INTO report VALUES (3, 'report_2018_Busan');
INSERT INTO report VALUES (4, 'report_2017_Paju');

 

 

replace() 함수를 사용하여 name 컬럼에 저장되는 값 중에서 2018를 모든 2019에 변경된 값을 받아온다.

SELECT name, replace(name, '2018', '2019') 
FROM report;

 

replace 함수의 첫 번째 인수에 직접 문자열을 입력하여 공백(’ ‘)을 언더바(’_’)로 변환해 보자.

SELECT REPLACE('My first birthday', ' ', '_');

 

 

 

 

문자열에서 일부분 추출 (substr 함수)

 

substr 함수를 사용하면 문자열의 지정된 위치에서 지정된 길이의 부분 문자열을 받아올 수 있다.

첫 번째의 인수로 지정된 문자열 중에서 부분 문자열을 받아온다. 받아온 부분 문자열은 두 번째의 인수로 지정된 위치에서 세 번째 인수에 지정된 길이의 문자열을 받아온다. 세 번째 인수를 생략하면 시작 위치에서 문자열의 끝까지의 문자열을 받아온다.

substr(문자열, 시작 위치, 문자의 길이)
substr(문자열, 시작 위치)

 

 

시작 위치는 첫 글자가 1이고, 두 번째 문자가 2로 이어진다. 또한 시작 위치에 음수 값을 지정할 수도 있다. 음수 값으로 지정하면 마지막 문자가 -1되고 마지막에서 두 번째 문자가 -2로 이어진다.

substr('database', 1, 3);    /* dat */
substr('database', 1, 4);    /* data */
substr('database', 5, 3);    /* bas */
substr('database', 5);       /* base */
substr('database', -3, 2);   /* as */

 

 

예시 정리

CREATE TABLE user (id INTEGER, name TEXT, address TEXT);
INSERT INTO user VALUES (1, 'devkuma', '01:Seoul ');
INSERT INTO user VALUES (2, 'kimkc', '02:Busan');
INSERT INTO user VALUES (3, 'araikuma', '03:Daejeon');
INSERT INTO user VALUES (4, 'happykuma', '01:Seoul ');
INSERT INTO user VALUES (5, 'raccoon', '04:Paju ');

 

 

substr 함수를 사용하여 address 컬럼에 저장되는 값 중에서 4번째 문자부터 3문자만큼 부분 문자컬럼을 받아온다.

select id, name, substr(address, 4, 3) from user;

 

 

substr 함수를 사용하여 address 컬럼에 저장되는 값 중에서 4번째 문자부터 끝까지의 부분 문자열을 받아와 본다.

select id, name, substr(address, 4) from user;

 

 

 

문자열의 시작과 끝에서 공백 제거 (trim 함수, rtrim 함수, ltrim 함수)

 

trim 함수를 사용하면 문자열의 시작과 끝에서 공백을 제거할 수 있다. rtrim 함수, ltrim 함수도 비슷하게 동작한다. 

 

trim 함수는 문자열 앞뒤에서 지정한 문자를 제거하는데 사용한다. 

trim(문자열)
trim(문자열, 문자)
rtrim(문자열)
rtrim(문자열, 문자)
ltrim(문자열)
ltrim(문자열, 문자)

 

 

예시 정리

CREATE TABLE msgdb (id INTEGER, msg TEXT);
INSERT INTO msgdb VALUES(1, ' Hello! ');
INSERT INTO msgdb VALUES(2, ' Good Bye ');
INSERT INTO msgdb VALUES(3, '__Thank you__');

 

trim 함수 및 ltrim 함수와 rtrim 함수를 사용하여 msg 컬럼에 저장된 문자열에서 처음과 끝에 있는 공백을 제거한 문자열을 받아온다.

SELECT id, QUOTE(TRIM(msg)), QUOTE(ltrim(msg)), QUOTE(rtrim(msg)) 
FROM msgdb;

 

rim 함수, ltrim 함수, rtrim 함수를 사용하여 msg 컬럼에 저장되는 값 중에서 처음과 끝에 있는 밑줄 (_)을 제거한 문자열을 받아온다.

SELECT id, TRIM(msg, '_'), LTRIM(msg, '_'), RTRIM(msg, '_') 
FROM msgdb;

 

 

 

숫자 반올림 구하기 (round 함수)

 

round 함수를 사용하면 숫자를 반올림 할 수 있다.

round(숫자)
round(숫자, 자릿수)

 

 

인수로 지정된 숫자를 소수점의 위치에서 반올림하여 반환한다.

round(0.47);      /* 0.0 */
round(0.536);     /* 1.0 */
round(0.536, 0);  /* 1.0 */
round(0.536, 1);  /* 0.5 */
round(0.536, 2);  /* 0.54 */

 

 

예시 정리

CREATE TABLE point (id INTEGER, point REAL);
INSERT INTO point VALUES (1, 15.4853);
INSERT INTO point VALUES (2, 27.143);
INSERT INTO point VALUES (3, 38.902);
INSERT INTO point VALUES (4, 26.5521);
INSERT INTO point VALUES (5, 30.36);

 

round 함수를 사용하여 point 컬럼에 저장되는 값을 소수점의 위치에서 반올림을 구해 본다.

SELECT id, point, ROUND(point) 
FROM point;

 

round 함수를 사용하여 point 컬럼에 저장되는 값을 소수점 첫째 자리의 위치와 소수점 둘째 자리의 위치에서 반올림 한 값을 구해 본다.

SELECT id, point, ROUND(point, 1), ROUND(point, 2) 
FROM point;

 

 

 

숫자 절대 값 구하기 (abs 함수)

 

abs 함수를 사용하면 숫자의 절대 값을 구할 수 있다.

 

abs(숫자)

 

 

인수에 지정된 숫자의 절대 값을 구하여 반환한다. 

인수에 NULL을 지정하면 NULL을 반환하고, 숫자가 아닌 값 (숫자로 변환할 수 없는 값)을 지정한 경우에는 0.0를 반환한다.

 

abs(0.47);      /* 0.47 */
abs(-19);       /* 19 */
abs(NULL);      /* NULL */
abs('-18.5');   /* 18.5 */
abs('pen');     /* 0.0 */

 

 

예시 정리

CREATE TABLE test (id, data);
INSERT INTO test values (1, 18);
INSERT INTO test values (2, -7.4);
INSERT INTO test values (3, NULL);
INSERT INTO test values (4, 'Flower');
INSERT INTO test values (5, '-16');

 

abs 함수를 사용하여 data 컬럼에 저장되는 값의 절대 값을 구해 본다.

SELECT id, data, ABS(data) 
FROM test;

 

 

 

난수 생성 (random 함수)

 

random 함수를 사용하면 난수를 생성할 수 있다. 

 

생성하는 난수의 범위는 -9223372036854775808에서 +9223372036854775807까지의 정수이다.

양수만 사용하려면 “숫자 절대 값 구하기 (abs 함수)“을 사용하여 절대 값을 구한다.

또한 특정 범위의 수치로 난수를 구하려면 % 연산자를 사용한다.

 

random()

 

 

예시 정리

 

randam 함수를 사용하여 -9에서 9까지와 0에서 9까지의 난수를 생성한다.

select random() % 10, abs(random()) % 10;

 

sqlite> select random() % 10, abs(random()) % 10;
random() % 10  abs(random()) % 10
-------------  ------------------
8              1                 
sqlite> select random() % 10, abs(random()) % 10;
random() % 10  abs(random()) % 10
-------------  ------------------
-1             7                 
sqlite> select random() % 10, abs(random()) % 10;
random() % 10  abs(random()) % 10
-------------  ------------------
-7             9                 
sqlite> select random() % 10, abs(random()) % 10;
random() % 10  abs(random()) % 10
-------------  ------------------
6              3

SELECT 문을 실행할 때마다 -9에서 9까지의 임의의 숫자와 0에서 9까지의 난수가 표시 되었다.

 

BasicLike

어? 나 프로그래밍 좋아하네?