쉬운 SQL 문장인데 알려주세요 ^^ 날짜별로 총액계산 0 5 1,331

by dkfldkfl [2016.12.04 13:11:17]


날짜별로 총액 계산인데 날짜가 varchar형식으로 2016년 11월 30일 5시 30분    // 2016년 12월 1일 6시 30분

이렇게 저장돼있어요

2016년 12월 1일 별로 총액, 2016년 11월 30일 별로 총액

이렇게 1일간격으로 셀렉트하고싶습니다 

이걸가져오기 위해서 어떻게 가져와야할까요?

 

select  ?? as "날짜" , sum(tot_prc) as "총액"  from orders group by date (select date from orders ??) ;

 

이런형식인것같은데 어떻게 채워나갸아할지 알려주세요

by 역훈 [2016.12.04 15:31:28]
select hire_date "날짜", sum(salary) "총액"
from employees
--where hire_date >= to_date('2006-11-01','YYYY-MM-DD')
--and hire_date < to_date('2007-11-02','YYYY-MM-DD')
group by hire_date;

 


by dkfldkfl [2016.12.04 16:13:45]

제가 mysql언어쓰는데 -- 이게 무슨뜻이죠??

그리고 to_date함수를 쓰라는뜻인가요? 2016년 5월 10일 5시 문자열을 to_date로 바꾸면 저렇게 바뀌어요?


by 역훈 [2016.12.04 16:34:15]

'--'는 주석처리입니다.

특정날짜 검색을 하실거면 주석 없애고 하시면 됩니다.

to_date 오라클함수 입니다.

mysql에서는 str_to_date 사용하시면 될것 같네요.

by dkfldkfl [2016.12.04 16:41:29]

제가위에 예시를 올렸는데 java에서 db로 저장할때 제가 2016년 5월 12일 5시 50분 이런식으로 저장해서

그대로 db에 저장했어요 그래서 구분기호가 월 일 으로 나오기때문에 기존 함수를 쓰기가 어렵네요,

 

이런상황에서 db로 저장할때 - 구분 기호로 저장하는게 맞을까요?

아니면  이상태에서 sql만으로 가져올수있나요?

 

참고로 저렇게 질의문 하면 저는 date의 필드 값들이 다 제각각( 분과 초가 들어있어요)

각 레코드당 하나씩 결과가 나와요 그룹이 안된다는거죠 


by 마농 [2016.12.05 10:49:12]

날짜는 날짜타입으로 관리하시는게 좋구요.
특히나 시분초까지 관리하신다면 더더욱 그렇구요.
문자형으로 관리하신다면, 고정자리수를 이용하시는게 좋습니다.


어쩔수 없이 위와 같은 형태로 저장되어 있다면?
세번째 공백 위치까지 잘라서 사용하시면 될것 같네요.

SELECT SUBSTRING_INDEX(dt, ' ', 3) dt
     , SUM(amt) amt
  FROM (SELECT '2016년 11월 30일 5시 30분' dt, 10 amt
        UNION ALL SELECT '2016년 12월 1일 6시 30분', 20
        ) a
 GROUP BY SUBSTRING_INDEX(dt, ' ', 3)
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입