我是SQL(ite)的新手,所以我很抱歉,如果有一个简单的答案我只是为了找到合适的搜索条件而愚蠢。
我有2个表:1表示用户信息,另一个表示用户获得的表。这是一个简单的一对多关系(用户可以多次获得分数)。
table1包含" userID"和"用户名" ...
table2包含" userID"和"金额" ...
现在我想获得给定用户名的高分排名。 为了获得高分,我做了:
SELECT Username, SUM(Amount) AS total FROM table2 JOIN table1 USING (userID) GROUP BY Username ORDER BY total DESC
如何选择单个用户名并从分组和排序的结果中获取其位置?我不知道一个子选择对于我的目标是什么样的。甚至可以在单个查询中使用吗?
答案 0 :(得分:1)
如果不引用其他数据,则无法计算用户的位置。 SQLite没有适合您的用户案例的排名功能,也没有可作为可接受替代品的行号功能。
我认为你能得到的最接近的是将这些数据放入一个递增ID的临时表中,但我认为你会在那里变得非常混乱。
最好在应用程序中处理此问题。获取所有用户并计算排名。根据需要缓存单个用户的结果。
如果不了解有关app / DB操作环境的更多信息,很难提供更具体的建议。
答案 1 :(得分:0)
对于特定用户,此查询获取总金额:
configobj
您必须计算有多少其他用户的金额高于该单个用户:
SELECT SUM(Amount)
FROM Table2
WHERE userID = ?