Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 计数()的问题_Sql Server_Sql Server 2005 - Fatal编程技术网

Sql server 计数()的问题

Sql server 计数()的问题,sql-server,sql-server-2005,Sql Server,Sql Server 2005,我想写一个查询,从同一个表中检索计数(工资=1000的员工)和计数(员工总数)。 有什么想法吗?另一种方法: SELECT COUNT(EmployeeID) as 'Total Employees', (SELECT COUNT(EmployeeID) FROM Employees WHERE Salary = 1000) as 'Salaried' FROM Employees SELECT COUNT(*) AS total_employees,

我想写一个查询,从同一个表中检索
计数(工资=1000的员工)
计数(员工总数)
。 有什么想法吗?

另一种方法:

    SELECT COUNT(EmployeeID) as 'Total Employees',   
    (SELECT COUNT(EmployeeID) FROM Employees WHERE Salary = 1000) as 'Salaried'
    FROM Employees 
SELECT
    COUNT(*) AS total_employees,
    SUM(CASE WHEN salary = 1000 THEN 1 ELSE 0 END) AS employees_with_1000_salary
FROM
    Employees

计数非空行。

是否要查询同一个表两次?在选择列表中使用子查询的效率低于单个查询(如)。使用
SET SHOWPLAN\u ALL ON
此查询的TotalSubtreeCost比@Tom H的单个查询高出近50%。answerthis生成的执行计划与。另外,您确实不需要使用
else NULL
,但是删除它并不会改变执行计划。@KM:只是把它放在这里,因为大多数人似乎不知道实际计数是多少:)特别是计数(*)相当于计数(1),但如果列可为空,则不需要计数(列)…+1,@ToxicAvenger,我同意,大多数人都不懂计数。您的答案与选择列表中带有子查询的答案一样快,而且比选择列表中带有子查询的答案好得多!
SELECT
    COUNT(*) AS total_employees,
    SUM(CASE WHEN salary = 1000 THEN 1 ELSE 0 END) AS employees_with_1000_salary
FROM
    Employees
select 
     count(*) totalCount, 
     count(case when salary = 1000 then 1 else NULL end) specialCount
from Employees