无法理解将返回用户访问特定服务的次数的SQL.认为它可能需要嵌套计数和选择,但无法理解它.
数据如下所示:
UserID Service
---------------
1 Map1
1 Map2
1 Map1
2 Map1
2 Map2
3 Map4
3 Map2
3 Map2
3 Map2
... ...
Run Code Online (Sandbox Code Playgroud)
所需的输出类似于以下内容:
UserID Service TimesAccessed
------------------------------
1 Map1 2
1 Map2 1
2 Map1 1
2 Map2 1
3 Map3 3
3 Map4 1
... ... ...
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激.
下面的查询功能完备,查询单个表以查找通过序列userid号列添加的最后50个用户名.
到目前为止的逻辑是:找出最高的用户ID; 从中减去50; 将用户名拉回到更大的位置.
但是,它看起来并不优雅,并使用两个子查询来实现它的目标:
SELECT username
FROM table
WHERE userid IN
(SELECT userid
FROM table
WHERE userid >
(SELECT MAX(userid) -50
FROM table))
Run Code Online (Sandbox Code Playgroud)
有没有办法减少嵌套?更高效?更优雅?任何帮助将不胜感激,因为这不是最好的方式!
干杯和非常感谢
阿里