计算具有特定日期的 1 和 0 的数量
Posted
技术标签:
【中文标题】计算具有特定日期的 1 和 0 的数量【英文标题】:count the number of 1st and 0's with a specific date 【发布时间】:2014-02-26 12:00:25 【问题描述】:在我的数据库中,我有列名部门和受雇(返回类型为位 - 0 或 1),我想计算今年每个部门(有 5 个部门)雇用的员工人数并对部门进行排名谁拥有最高的员工。我需要帮助结合 SQL 查询。
这就是我如何计算 0'1 和 1's SELECT COUNT(CASE Authorised WHEN 1 THEN 1 ELSE NULL END) FROM TableName;
这就是我如何选择今年的日期:`
SELECT distinct *
From TableName
WHERE Time BETWEEN CONVERT(Date,@Time) AND CONVERT(Date, @Time2)
如何组合这些查询?
【问题讨论】:
你想解决什么问题。这就是为什么需要日期以及为什么需要 1 和 0?这看起来像一个使用按部门分组和使用计数的 sql 查询。 Employee 列的返回类型为位,所以我想计算公司 X 雇用的员工 1 的数量。查询应该只计算今年的 1 的数量。 如果您需要在 0 和 1 有效的结果中计算 1,您可以简单地 SUM 而不是 COUNT。但是要小心空值。 【参考方案1】:你需要使用这个查询,查询返回所有部门名称和其中的员工总数。
SELECT
DEPARTMENTNAME, COUNT(*) AS TOTAL
FROM
TABLENAME
WHERE
TIME BETWEEN
CONVERT(Date,@Time)
AND
CONVERT(Date, @Time2)
GROUP BY DEPARTMENTNAME
ORDER BY COUNT(*) DESC
【讨论】:
格栅,这就是我需要的。但在总列中,我如何使最高数字出现在列表顶部。如果我想将此信息显示给网络浏览器,我将通过data
返回列表,我该如何编写我的 [webmethod]?然后可以通过ajax调用
我对@987654323@一无所知。要最高的数字出现在顶部,您需要创建一个子查询,我编辑了我的答案。
我收到错误 Incorrect syntax near the keyword 'SELECT'.
Incorrect syntax near ''.
你在用什么数据库?
我使用的是 2008 年,更新后的答案显示从低到高。我要从高到低。【参考方案2】:
这是您的 sql 应该如何的示例。
declare @WhatEverYourTableNameIs Table
(
Department varchar(3),
employed bit,
employeddate date
)
Insert into @WhatEverYourTableNameIs
Values
('dem',1,'2014-1-1'),
('dem',1,'2014-2-1'),
('dem',0,'2014-2-1'),
('eem',1,'2013-2-1'),
('dem',1,'2013-2-1'),
('eem',1,'2014-2-1')
Select Department, Count(employed) AS Cnt
From @WhatEverYourTableNameIs
Where employeddate >'2013-12-31' and employed = 1
Group by Department
order by Cnt desc
【讨论】:
以上是关于计算具有特定日期的 1 和 0 的数量的主要内容,如果未能解决你的问题,请参考以下文章