숫자에서 0을 제거하는 중
정수(숫자)가 포함된 열에서 0(선행 0뿐만 아니라 모든 위치의 0)을 제거하려면 어떻게 해야 합니까?
예를 들어 0349010330은 349133이 됩니다.
다음은 Hackerlank 과제 The Block을 위한 솔루션(MySQL)입니다.
SELECT CEIL((AVG(salary)) - (AVG(REPLACE(salary, '0', '')))) AS avg_salary FROM employees;
- REPLACE() : 급여에서 0을(를) 제거하기 위해 사용됩니다.
- AVG() : 평균 급여 계산에 사용됩니다.
- CAILLE() : 반올림된 다음 정수를 가져오는 데 사용됩니다.
REPLACE('0349010330', '0', '');
이것 또한 효과가 있다
REPLACE('0349010330', '0');
치환을 사용하기 위해 문자열로 변환할 필요가 없습니다.
MySQL 솔루션
SELECT CEIL(AVG(SALARY)-AVG(REPLACE(SALARY,"0",""))) FROM EMPLOYEES ;
Oracle/PLSQL
SELECT TO_NUMBER(REPLACE(TO_CHAR(0349010330),'0','')) FROM DUAL;
MySQL
SELECT CONVERT(REPLACE(STR(0349010330),'0',''),INTEGER) FROM DUAL;
솔루션 여기 ->
`SELECT ROUND(AVG(SALARY)-AVG(TO_NUMBER(REPLACE(TO_CHAR(SALARY),'0')))+.5,0) FROM EMPLOYEES;`
SQL Server용 HakerRank 솔루션
SELECT CEILING(AVG(SALARY))- CEILING(AVG(CAST(REPLACE(SALARY,'0','')AS INT))) +1 FROM EMPLOYEES;
왜 마지막에 '+1'이 있어야 정답이 나오는지 모르겠어요.
MYSQL:
치환('0349010330', '0', '')
그러면 문자열 내의 모든 OS가 빈 문자열로 바뀝니다.
사용방법: TO_NUMBER(REPLACE('0349010330',0))
HackerRank Mysql 솔루션 https://www.hackerrank.com/challenges/the-blunder/problem
SELECT CEIL((AVG(SALARY))-(AVG(REPLACE(SALARY,'0','')))) FROM EMPLOYEES
https://www.hackerrank.com/challenges/the-blunder/problem
Mysql의 경우 아래 쿼리를 실행하십시오.
select ceil(Avg(Salary) - Avg(CAST(Replace(CAST(Salary as char(1000)),'0','') as unsigned))) from EMPLOYEES
여기 답이 있습니다.
치환(syslog,0)
이와 유사한 질문이 해커랭크에서 발견되었습니다.실수 문제
종업원으로부터 ceil(avg(avg)-avg(replace(avg,0))를 선택한다.
은 은 필요 합니다.to_number( replace( to_char(x), '0', '' ) )
입력하시면 .
replace(x, '0')
그리고 주물은 자동으로 적용됩니다.을 공백으로 .replace(x, '0', '')
이 되다replace()
대체 값을 지정하지 않으면 기본적으로 첫 번째 값이 삭제됩니다.
Oracle에서 REPLACE를 사용할 수 있지만 REPLACE는 CHAR 결과를 반환하므로 결과를 숫자로 변환해야 합니다.
select to_number(replace(1001,0,'')) from dual
다음은 MySQL for Hackerlank 문제에 대한 답변입니다.
SELECT round(avg(salary),0)-round(avg(replace(salary,'0','')),0) from EMPLOYEES;
다음을 사용할 수 있습니다.
replace(Column_Name,'0','')
지정된 정수 유형 입력에서 0을(를) 제거하기 위한 위의 쿼리
select
avg(salary) - avg(convert(integer, replace(salary,'0', ''))) + 1
from employees
이게 답이야
이것은 임의의 번호에서 0을 제거하는 것에 대한 대답입니다.
replace('0349010330', '0', '')
MS SQL에서는 @hrshd가 언급한 바와 같이 다음과 같이 답변했습니다.
SELECT CEILING(AVG(SALARY))- CEILING(AVG(CAST(REPLACE(SALARY,'0','')AS
INT))) +1 FROM EMPLOYEES;
위의 +1 추가 문제는 두 값이 동일한 데이터 유형일 경우 발생하지 않습니다.가능한 해결책은 다음과 같습니다.
select ceiling( avg(cast(Salary as real)) -
avg(cast(replace(Salary,0,'') as real)) )
from EMPLOYEES;
MS SQL에서는 첫 번째 질문에 대답할 때 다음과 같습니다.
- Replace() 함수를 사용하여 문자열 치환 작업을 수행합니다.
- 필요에 따라서, i.e.int, real 등에 송신합니다.
cast( replace(a_number,0,'') as real )
HackerRank 솔루션 https://www.hackerrank.com/challenges/the-blunder/problem
SQL Server에서
SELECT CAST(CEILING (AVG(CAST(SALARY AS float)) - AVG(CAST(REPLACE(salary, '0', '')AS float) ) ) as int) FROM EMPLOYEES;
여기서 실제 평균 급여는 4046.75이고 평균 급여는 1794.5로 잘못 계산되어 있기 때문에 2252.25의 차이는 반올림했을 때 2253.0이지만 해커랭크 솔루션에서는 int로 예상하기 때문에 다시 int로 되돌릴 필요가 있습니다.
언급URL : https://stackoverflow.com/questions/35613341/removing-zeros-from-number
'programing' 카테고리의 다른 글
url 내의 double excape sequence : 요구 필터링 모듈은 이중 이스케이프 시퀀스를 포함하는 요구를 거부하도록 설정됩니다. (0) | 2023.04.22 |
---|---|
matplotlib 범례 추가 (0) | 2023.04.22 |
ORDER BY 절이 뷰, 인라인 함수, 파생된 테이블, 하위 쿼리 및 일반 테이블 식에 유효하지 않습니다. (0) | 2023.04.17 |
T-SQL에서 날짜/시간을 문자열로 변환하는 방법 (0) | 2023.04.17 |
Excel VBA를 사용하여 MS Access 테이블로 데이터 내보내기 (0) | 2023.04.17 |