查找不包含特定日期的行数?

时间:2013-03-19 04:40:54

标签: sql

我正在尝试计算在特定日期没有租借视频的人数,例如25-OCT-13。我有一个 dateout datein 字段,但是对于我的生活,我无法确定要继续采取的步骤,因为我没有可以使用的范围,只有具体的日期。

我想如果我能找出当天有多少项目,那么我就不能查询了,但后来我仍然坚持原来的问题。

检查此问题的最简单方法是什么?

我正在使用SQL开发人员 该表由ItemNo,CardNo,DateOut,DateIn。

组成

我在考虑BETWEEN,但AFAIK只适用于范围并且使用相同的日期似乎不起作用。我不太了解日期如何工作TBH。

最终结果理想情况下是在特定日期没有ItemNo的所有唯一CardNo的计数。

2 个答案:

答案 0 :(得分:0)

只是在猜测你可能需要什么,当然我并不完全理解你的问题。

    select count(distinct people) 
    from tableName 
    where '25-OCT-2013' not between DateOut and DateIN

答案 1 :(得分:0)

要查找在特定日期没有借出视频的人数,您需要知道有多少人拥有一张卡,以及有多少人在特定日期有借阅的视频。

您似乎有两张桌子:

  • CardHolder:CardNo,......
  • LoanItem:CardNo,ItemNo,DateIn,DateOut,...

所以,持卡人的数量是:

SELECT COUNT(*) FROM CardHolder

2013年10月25日有一件或多件贷款项目的人数为:

SELECT COUNT(DISTINCT CardNo)
  FROM LoanItem
 WHERE DATE '2013-10-25' BETWEEN DateOut AND DateIn

所以,你需要:

SELECT (SELECT COUNT(*) FROM CardHolder) -
       (SELECT COUNT(DISTINCT CardNo)
          FROM LoanItem
         WHERE DATE '2013-10-25' BETWEEN DateOut AND DateIn
       )

您可能需要提供一个SELECT表 - 这取决于您的DBMS。

SELECT (SELECT COUNT(*) FROM CardHolder) -
       (SELECT COUNT(DISTINCT CardNo)
          FROM LoanItem
         WHERE DATE '2013-10-25' BETWEEN DateOut AND DateIn
       )
  FROM Dual;

或任何其他1行表。