이바닥 늦깍이로 시작했기에...
두고두고 볼 로드맵으로 생각하고 열심히 레벨업!!

번역: 上善若水님-개발자역량 메트릭스


원문 : Programmer Competency Matrix 


블로그 이미지

ohnewdev

배워서 남주자

,

[CMD] 사용법

TOOL/CMD, BASH 2017. 4. 14. 09:19

[CMD] 사용법

Redirection

C:\ dir > dir.log
C:\ type dir.log

dir의 결과를 dir.log 에 남깁니다. 
(기존 파일이 있다면 덮어씁니다.)

C:\ dir/w >> dir.log

dir.log 파일에 이어 저장합니다.

C:\dir/w >> dir.log | start notepad dir.log
C:\dir/w >> dir.log & start notepad dir.log

수행을 하면서, 지정한 프로그램으로 해당 파일을 엽니다.


근데, 뒤쪽에 이상한 것들이 붙는 것들이 있어서 좀 찾아봤다.

D:\temp\TEST>dir /w > text4.txt 2>&1

기본적으로 stdout 의 대상이 text4.txt 가 되고, 
또한 stderr 도 text4.txt 가 된다는 뜻. 
그래서, 일반적/오류가 나는 부분도 text4.txt 로 출력한다는 뜻임. 
여기서

  • 2 는 stderr 을 의미하고
  • > 는 redirection
  • &1 은 redirection 되는 대상인 text4.txt 가 된다.


참고(표준스트림
일단 여기까지….

[참고]


'TOOL > CMD, BASH' 카테고리의 다른 글

[gitlab] 프로젝트 CLI 생성  (0) 2018.03.07
Bash 를 잘 좀 써보기  (0) 2018.02.21
블로그 이미지

ohnewdev

배워서 남주자

,

[SQL] rownum, limit(top), order by 순서지정

사용자를 구별하는데 기존의 아이디가 변경될 수 있으니 키 값을 userid로 하지 않고 uniquenum 으로 식별하는 구조로 생각했더니, 
변경전(또는 퇴직) 아이디를 가지고 오는 경우가 발생했다. 
그래서 쿼리를 변경하려고 한다.

일단 잠재적인 문제가 발생할 수 있는 사용자가 얼마나 있는지 확인해보면… 
uniquenum 은 같으나 status가 Y(활성화)된 사용자를 한번 찾아보면…

select a.userid, a.uniquenum , count( a.uniquenum  ) from user_tbl a LEFT OUTER join user_tbl b
on 1=1
and a.uniquenum = b.uniquenum
group by a.userid, a.uniquenum, a.status
having count( a.uniquenum ) > 1
and a.status = 'Y'

예상데로 여러건들이 나왔다.

여러건이 나올 수 있는 결과에서 1개의 레코드만 필요하고, 특정 필드(예에서는 status)의 원하는 순서데로 뽑아야 한다.

하나의 record 를 뽑으려면 rownum 을 쓰지만, 
이미 rownum 데로 건수를 뽑고 그리고나서 orderby 가 먹힌다. 
과거에 TOP 과 비슷한 것이 생각나 찾아보니, limit 이란 것이 있어 아래와 같이 했다.

결과는 원하는데로 나왔지만, 찝찝하다.. 좀 더 정교하게 콘트롤 하고 싶은데, status 의 상태가 불안하다.

-- postgresql
select userid, uniquenum, status from user_tbl
where 1=1
and uniquenum = 'S123456789'
--and rownum=1
order by status desc
limit 1

찾아 보니, order by 에 케이스를 지정할 수 있었다.

link - sql ORDER BY multiple values in specific order?

2가지 방법이 나오는데, 2번째 방법이 눈에 더 잘 들어와서 
해보니, 잘된다 :) 
그러나 postgresql 에서만 되는 듯. 그리고, 지정을 낮은 단계부터 써야하는 조금 이상하다.

select userid, status from user_tbl
where 1=1
and uniquenum = 'S123456789'
and status in ('N', 'R', 'Y')
order by status = 'N', status = 'R', status = 'Y'
limit 1

그래도 좀 더 지지를 많이 받는 표현도 익혀보면~

select userid, status from user_tbl
where 1=1
and uniquenum = 'S123456789'
and status in ('R', 'N', 'Y')
order by
CASE status
when 'Y' then 1
when 'R' then 2
when 'N' then 3
else 4
end, userid
limit 1;


역시나 많이 쓰는 것으로 채택;;


'프로그래밍 > SQL' 카테고리의 다른 글

[postgresql] UPSERT  (0) 2017.05.11
블로그 이미지

ohnewdev

배워서 남주자

,