공부/SQL8 SQL 추가 공부 1. ORDER BY에 꼭 테이블 네임이 들어가 필요 x -EX: ORDER BY (J.TOTAL_ORDER + H.TOTAL_ORDER) DESC 2.헷갈리는 순서 기억하기 -BETWEEN은 작은 거 뒤에 큰거 또한 이상 이하를 포함한다. -EX: age BETWEEN 30 and 50 DATEDIFF는 큰거 뒤에 작은 순서로 진행된다. -EX: DATEDIFF(end_date,start_date) 3.Sql은 CHAR타입에 숫자말고 다른게 포함되어있어도 숫자만 알아듣는다 -단 앞의 가장 먼저 나온 숫자만 알아들음 -EX: SELECT 3+'a24d5' -Result: 25 4.OUTER JOIN과 INNER JOIN을 같이 썼는데 나는 오류.....?? ? -근데 INNER JOIN a LEFT JO.. 2023. 4. 7. 3-30 SQL 추가 공부 1. RIGTH JOIN은 on 절이 일치하지 않는 right 테이블의 값도 불러온다. -EX: with recursive A as( Select 0 AS HOUR UNION ALL SELECT HOUR+1 FROM A WHERE HOUR < 23 ) SELECT b.HOUR, COUNT(a.ANIMAL_ID) as COUNT FROM ANIMAL_OUTS as a RIGHT OUTER JOIN A as b on HOUR(a.DATETIME) = b.HOUR GROUP BY b.HOUR ORDER BY b.HOUR asc; ANIMAL_OUTS의 값은 7~19까지( LEFT) A의 HOUR값은 0~ 23(RIGHT) 교집합 : 7~19 그러나 0~23까지의 HOUR ROW를 갖고싶다면 RIGHT OUTE.. 2023. 3. 30. 3.24 SQL 추가 공부 1. Max를 조건값으로 쓸 땐 where에 서브쿼리를 이용하자 - GROUP BY에서 묶은 그룹에서 최댓값을 가진 row를 구할 때 HAVING column = MAX(column)은 안됨 -대신 WHERE name = (SELECT name FROM table GROUP BY column1 HAVING column = MAX(column))은 작동 - 이때 서브쿼리 자체로만 쿼리를 돌릴 경우 오류가 뜨지만 서브쿼리로 적용했을땐 잘 search한다 . 이유는 모름 2. 대여기간의 경우 DATEDIFF 함수에 +1을 하자 - startdate 당일도 기간으로 치는 경우에는 DATEDIFF 함수에 1을 추가하도록 하자. 3. LIKE의 경우엔 WHERE 절에만 쓰는게 아닌 IF 절도 가능하다 - IF( C.. 2023. 3. 24. 3-21. SQL 추가 지식 공부 1. Group은 직접 만든 column도 묶기가 가능하다. -EX: SELECT (price DIV / 10000) * 10000 as price_list , COUNT(*) as 'COUNT' FROM product group by price_list order by count 2. CONCAT 절 -목적 : string 여러개를 한데 잇는다. -EX: CONCAT ( LEFT(price, 1) , '0000') as price_list 3.Where 절의 10000 < a < 20000는 불가하다. And로 나눠주거나 Column BETWEEN A and B를 사용하자. 4.Group by는 두 컬럼 묶기도 가능하다 (두 컬럼의 값이 같은 것들을 묶는다.) 5. 산술 연산자 - 목적 : 왼쪽의 피연.. 2023. 3. 21. 이전 1 2 다음