我有一个结果集,我想在其中应用组合排序。
实施例
SELECT Id,Name FROM Users
结果
Id Name
1 Albert
2 Alfred
3 Carl
4 David
5 Ernest
现在,这些用户可以通过上次访问,最后发布,评论数量或计算参数进行排序。如果我有这样的SELECT,我怎么能订购:
SELECT Id,Name,function_last_access(Id)为f1, function_last_post(Id)为f2,function_calculate_parameters(Id)为f3 来自用户
Id Name f1 f2 f3
1 Albert 2 100 1,1
2 Alfred 10 20 2
3 Carl 0 15 5
4 David 5 2 3
5 Ernest 4 5 1
最好采用不同的有序列表并在之后将它们组合起来? 或者将它们放在列中然后应用规范化函数然后对它们进行排序?
可以帮我订购PARERTION或类似的东西吗?
答案 0 :(得分:2)
您可以将别名移动到子查询,以便在order by
中引用它们:
SELECT *
FROM (
SELECT Id
, Name
, function_last_access(Id) as f1
, function_last_post(Id) as f2
, function_calculate_parameters(Id) as f3
FROM Users
) as SubQueryAlias
order by
0.3 * f3 + 0.2 * f2 + 0.1 * f3 desc
答案 1 :(得分:1)
这对你有用吗?
SELECT Id, Name, f1, f2, f3
FROM
(
SELECT Id,
Name,
function_last_access(Id) as f1,
function_last_post(Id) as f2,
function_calculate_parameters(Id) as f3
FROM Users
) f
ORDER BY f1, f2, f3