表员工:
Id Name Salary
-- ---- ------
1 A1 120
2 B1 105
3 C1 200
现在我想通过删除每位员工的工资0来找到薪资总和。
即12 + 15 + 2 = 29
有关如何实现我的结果的任何想法?
由于
答案 0 :(得分:6)
如果Salary
是数字类型,则需要CAST
首先VARCHAR
。然后使用REPLACE
删除0
,然后CAST
将其恢复为数字类型,最后再执行SUM
:
SELECT
SUM(CAST(REPLACE(CAST(Salary AS VARCHAR(10)), '0', '') AS INT))
FROM Employee
答案 1 :(得分:1)
SELECT SUM(CAST(REPLACE(t.Salary, '0', '') AS INT))
FROM (
VALUES (120),(105),(200)
) t(Salary)
答案 2 :(得分:0)
select ceil(avg(salary) - avg(replace(salary,'0',''))) from employees;
或者您可以简单地使用替换功能
答案 3 :(得分:0)
此代码也应该起作用:
#if defined(UNICODE) && !defined(_UNICODE)
#define _UNICODE
#elif defined(_UNICODE) && !defined(UNICODE)
#define UNICODE
#endif
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrev,LPSTR lpCmdLine, int iCmdShow){
int s = MessageBoxA(NULL, "Hi This is my First c++ GUI", "Win32 API Say:", MB_CANCELTRYCONTINUE);
if(s == IDTRYAGAIN){
MessageBoxA(NULL, "Hi This is my First c++ GUI", "Win32 API Say:", MB_CANCELTRYCONTINUE);
}else if(s == IDCONTINUE){
MessageBoxA(NULL, "Yes GO On", "Win32 API Say:", MB_ICONINFORMATION);
}else{
MessageBoxA(NULL, "GoodBey !!", "Win32 API Say:", MB_OK);
}
return 0;
}
答案 4 :(得分:-1)
SELECT ROUND (AVG(Salary) -
AVG(CONVERT(INTEGER, REPLACE(CONVERT(VARCHAR, Salary), 0, ''))), 0 )
FROM EMPLOYEES