【发布时间】:2021-03-29 21:03:34
【问题描述】:
我正在尝试获取最新游戏的日期以及玩家在此之前 1 小时窗口内的游戏数量。
这是我要执行的代码
SELECT MAX(saved_date), COUNT(saved_date) FROM Game
WHERE username = 'user_name'
HAVING saved_date >= MAX(saved_date) - interval '1' hour;
但它给了我错误not a GROUP BY expression。当我添加GROUP BY saved_date 行时,错误没有出现,但它没有回答我的第一个问题。我知道我可以在两个语句中完成,但我更喜欢在一个语句中完成。
您有什么建议或解决方案吗?由于这是我在这里的第一篇文章,请放纵,谢谢!
附加信息:
Game 表是这样创建的:
CREATE TABLE GAME (
game_id NUMBER GENERATED ALWAYS AS IDENTITY,
...
saved_date DATE,
...
);
使用GROUP BY saved_date 输出:
MAX(saved_date) | COUNT(saved_date)
----------------|------------------
29/03/21 | 1
29/03/21 | 1
29/03/21 | 1
想要的输出:
MAX(saved_date) | COUNT(saved_date)
----------------|------------------
29/03/21 | 3
【问题讨论】:
-
您已标记 Oracle 11g;但是,直到 Oracle 12 才支持
GENERATED ALWAYS AS IDENTITY语法。您使用的是哪个版本? -
你真的确定
GROUP BY saved_date..的结果吗?