计算具有特定日期的 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调用 我对@9​​87654323@一无所知。要最高的数字出现在顶部,您需要创建一个子查询,我编辑了我的答案。 我收到错误 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 的数量的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Bigquery 中的另一个事件之前计算特定事件的数量?

获取具有特定数量的重复值的行

无法创建具有特定数量的类标签的熊猫数据框

列出具有特定扩展名的目录和文件数量,构建特定菜单

MySQL 计算两个参数

从 eventStore 获取特定数量的事件