我的数据库中有两个表,我试图使用一个查询从这两个表中获取特定报表的数据。
表一是“电影”,它有以下几个字段:
表二是每部电影的票房收入:
我想运行一个查询,比较给定季节中每部电影的开头周末,并将其作为一个数据集返回,并将所收集的金额相加在一起。所以我想把每部电影都拍下来,为每部电影拿到头三天的票房,然后把它们加起来,这样我就可以得到这样的查询了
请注意,收集的金额只需要输出数字,我会处理格式。我只是很难弄清楚如何只查询每部电影的前三天票房,并把它们加在一起。
我知道我可以运行一个查询,获得票房的电影,然后循环使用它,然后重新查询数据库,但是我知道,对于很多电影来说,这并不是最有效的方法。我不确定是否有办法在一个查询中完成所有这些(每部电影的前三天加在一起),但我想看看是否有更先进的知识可以帮助我。
发布于 2012-11-06 00:19:51
SELECT a.Name, SUM(COALESCE(b.Amount,0)) totalAmount
FROM Movies a
LEFT JOIN BoxOffice b
ON a.Movies_ID = b.Movies_ID
WHERE b.date BETWEEN DATE_ADD(CURDATE(),INTERVAL -3 DAY) AND CURDATE()
GROUP BY a.Name如果CURDATE()的数值是2012-11-06年(即今天),它将计算从2012-11-03年到2012-11-06年。
后续问题,你是如何计算日期的?白天?每周一次?不然呢?
更新1
SELECT a.Name, SUM(COALESCE(b.Amount,0)) totalAmount
FROM Movies a
LEFT JOIN BoxOffice b
ON a.Movies_ID = b.Movies_ID
LEFT JOIN
(
SELECT movies_ID, MIN(date) minDate
FROM BoxOffice
GROUP BY Movies_ID
) c ON a.Movies_ID = c.Movies_ID
WHERE DATE(b.date) BETWEEN DATE(c.minDate) AND
DATE(DATE_ADD(c.minDate,INTERVAL 3 DAY))
GROUP BY a.Name发布于 2012-11-06 00:20:34
只需加入Movies_ID上的表,并在发布日期和日期为3天之间添加WHERE和TIMEDIFF。
https://stackoverflow.com/questions/13242532
复制相似问题