一个Count里面的SQL Query ::参数?

时间:2012-07-03 22:15:33

标签: mysql sql

假设我有一张带列的电影租借者表:

  • 用户ID
  • MovieID
  • Rent_Start_date
  • Rent_Due_Date

我正在尝试实现一个看起来像的输出表:

[UserID, Count of Movies Due in 1 Day, Count of Movies Due in 1 Week]

这可以在一个查询中完成吗?我目前有一个php脚本,可以在1天内运行1个电影查询,另一个查询在1周内运行电影。然后为每个用户ID循环这两个查询,基本上逐个插入表。这有点慢。

通过尝试仅使用1个查询创建此输出,我尝试了类似:

  SELECT UserID, count(movieID)
    FROM MovieTable
GROUP BY movieID

但是这并没有创建到期日计数列。

是否可以创建一个具有诸如count之类的争论的计数列(//所有满足Rent_Due_Date - CURDATE() < ONE_WEEK的地方?)

1 个答案:

答案 0 :(得分:3)

您需要按用户对结果进行分组,而不是按电影分组:

SELECT   UserID,
         SUM(Rent_Due_Date BETWEEN CURRENT_DATE AND CURRENT_DATE + INTERVAL 1 DAY),
         COUNT(*)
FROM     MovieTable
WHERE    Rent_Due_Date BETWEEN CURRENT_DATE AND CURRENT_DATE + INTERVAL 1 WEEK
GROUP BY UserID