728x90

출처

이전달 마지막날 구하기

select LAST_DAY(NOW() - interval 1 month)

첫째날 구하기 (이전달 마지막날 + 1일)

select LAST_DAY(NOW() - interval 1 month)+ interval 1 DAY

자주 사용하는 경우 함수로 만들기

DELIMITER $$

DROP FUNCTION IF EXISTS FIRST_DAY$$

CREATE FUNCTION FIRST_DAY(p_src_day DATE) RETURNS DATE
BEGIN

	RETURN LAST_DAY(p_src_day - interval 1 month)+ interval 1 DAY;

END$$

DELIMITER ;

호출 예

select FIRST_DAY(now())
728x90
728x90

MySQL - 일별통계, 주간통계, 월간통계

출처 : Error related to only_full_group_by when executing a query in MySql - Stack Overflow
[Mysql] DB일간 주간 월간 년간 통계 | database

sample 테이블 생성

CREATE TABLE `test_st` (
  `reg_date` date NOT NULL,
  `value` int(11) NOT NULL
);

INSERT INTO `test_st` (`reg_date`, `value`) VALUES
  ('2017-03-01', 4),
  ('2017-03-08', 2),
  ('2017-03-15', 4),
  ('2017-03-22', 4),
  ('2017-04-01', 9),
  ('2017-04-02', 1),
  ('2017-04-04', 2),
  ('2017-04-09', 4),
  ('2017-04-11', 2),
  ('2017-04-16', 4),
  ('2017-04-18', 5),
  ('2017-04-23', 3),
  ('2017-04-25', 4),
  ('2017-04-30', 4),
  ('2017-04-01', 5);

MySQL - 일별통계

SELECT DATE(`reg_date`) AS `date`, 
       sum(`value`)
  FROM test_st
 GROUP BY `date`;

MySQL - 주간통계

SELECT DATE_FORMAT(DATE_SUB(`reg_date`, INTERVAL (DAYOFWEEK(`reg_date`)-1) DAY), '%Y/%m/%d') as start,
       DATE_FORMAT(DATE_SUB(`reg_date`, INTERVAL (DAYOFWEEK(`reg_date`)-7) DAY), '%Y/%m/%d') as end,
       DATE_FORMAT(`reg_date`, '%Y%U') AS `date`, 
       sum(`value`)
  FROM test_st
 GROUP BY date;

MySQL - 월간통계

SELECT MONTH(`reg_date`) AS `date`, 
       sum(`value`)
  FROM test_st
 GROUP BY `date`;

기간별 통계

SELECT DATE(`reg_date`) AS `date`,
       sum(`value`)
  FROM test_st
 WHERE DATE(`reg_date`) >= STR_TO_DATE('2017-04-01', '%Y-%m-%d')
   AND DATE(`reg_date`) <= STR_TO_DATE('2017-04-10', '%Y-%m-%d')
 GROUP BY `date`;
728x90
728x90

Sample 데이터 다운로드

출처 : MySQL Sample Database - MySQL Tutorial

Sample 데이터 import

mysql -h localhost -P 5614 -u root -p < mysqlsampledatabase.sql

Select 문장

출처 : Using MySQL SELECT Statement to Query Data - MySQL Tutorial
SQL Syntax - TutorialsPoint

SELECT 컬럼명1, 컬럼명2
  FROM 테이블명

Select 예

select customerNumber, customerName
  from customers;

DISTINCT 예약어

출처 : SQL 자습서 - 1Keydata

SELECT 문장에 나열된 컬럼의 데이터가 중복행이 있으면 종복행을 제외하고 조회하는 예약어

SELECT DISTINCT 컬럼명1, 컬럼명2
  FROM 테이블명

Select 예

select DISTINCT city
  from customers;

-

-

728x90
728x90
-- 지난주 월요일부터 일요일까지
select sysdate - 5 - to_char(sysdate, 'd'), sysdate + 1 - to_char(sysdate, 'd') from dual

-- 이번주 월요일부터 일요일까지
select sysdate + 2 - to_char(sysdate, 'd'), sysdate + 8 - to_char(sysdate, 'd') from dual
728x90
728x90

출처

http://www.w3schools.com/sql/sql_between.asp

select decode(statusid,1,1,0) as f1,
       decode(statusid,2,1,0) as f2,
       decode(statusid,3,1,0) as f3,
       decode(statusid,4,1,0) as f4
  from jsp_board
 where write_date
       BETWEEN to_date(to_char(sysdate,'yyyymmdd') || '000000','yyyymmddhh24miss')
       and to_date(to_char(sysdate + 1,'yyyymmdd') || '000000','yyyymmddhh24miss')

728x90
728x90
728x90

+ Recent posts