0

我正在尝试计算在特定日期(例如 13 年 10 月 25 日)没有借出视频的人数。我有一个dateoutdatein字段,但我一生无法确定要采取哪些步骤继续,因为我没有可使用的范围,只有特定的日期。

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

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

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

我在想一个 BETWEEN 但仅适用于一个范围并且使用相同日期的 AFAIK 似乎不起作用。我不太了解日期如何工作 TBH。

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

4

2 回答 2

0

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

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

于 2013-03-19T04:57:46.397 回答
0

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

你似乎有两张桌子:

  • 持卡人:卡号,...
  • 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 行表。

于 2013-03-19T05:08:18.963 回答