【发布时间】:2021-10-11 16:42:51
【问题描述】:
我需要在发布之日起的前 60 天内找到每个标题的总播放分钟数:
xx 表:
title_id 整数
minutes_streamed 浮动
streamstartdate 日期(yyyymmdd hh:ss)
yy 表:
类型 varchar
launch_date 日期(yyyymmdd hh:ss)
SELECT xx.title_id, yy.genre, SUM(xx.minutes_streamed) AS total_minutes
FROM xx
JOIN yy
ON xx.titleid = yy.titleid
WHERE xx.streamstartdate BETWEEN yy.launch_date + 60
AND yy.launch_date
GROUP BY 1, 2
这是采取/任何其他更“优雅”的方法的正确方法吗?
【问题讨论】:
-
别管“方法”——即使是语法错误。在 Oracle 中,您不能
group by 1, 2并期望 1 和 2 扩展为select中的表达式。您可以为order by(在投影步骤之后处理 -select步骤)执行此操作,但您不能为group by执行此操作,它在投影之前而不是之后处理。逻辑上不可能。