首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较方法在SQL中的排序

比较方法在SQL中的排序
EN

Stack Overflow用户
提问于 2014-02-16 00:23:56
回答 1查看 629关注 0票数 0

假设我的数据库中有以下情况:

第一个元素是用户ID,第二个元素是一些数据,最后是它的标记。

代码语言:javascript
复制
1-1-1
1-2-2
1-3-4

2-4-1
2-2-1

3-1-5
3-3-1
3-2-5

4-2-2
4-1-1

5-4-1
5-6-2

如何进行排序并从SQL查询ID返回,如果数据位于另一个用户ID中,则将按标记进行排序。

示例:如果我将具有ID 1的用户数据与其他数据进行比较,则必须返回以下内容:

代码语言:javascript
复制
4-2-2
4-1-1

2-4-1
2-2-1

3-1-5
3-3-1
3-2-5

所以排序将按顺序返回数据: 4、2、3。

那就排序!我想更详细地说:请看:

代码语言:javascript
复制
1-1-1
1-2-9
1-4-2

2-1-5
2-2-2
2-5-4

3-1-3
3-3-3
3-2-8
3-4-6 
3-6-10

============= ============= 1 ============== ==============

具有第二个id的用户:

1:(10-1) - (10-5) = (4) = 4;

2:(10-9) - (10-2) = ABS(-7) = 7;

3:用户1中的下一个数据--用户2中的缺失,我们可以轻松地传递它;

具有第三个id的用户:

1:(10-1) - (10-3) = (2) = 2;

2:下一个数据在3rt id的用户中缺失;

3:(10-9) - (10-8) = ABS(-1) = 2;

4:(10-2) - (10-6) = (4) = 4;

5:通过;

============== =============2 ============== ==============

那么我需要数一数结果:

因此,它将:

用户2: COUNT = (4+7) = 11;

用户3: COUNT = (2+2+4) = 8;

并删除关于金额的这一结果:

用户2:计数=计数/2= 11/2 = 5.5;

用户3:计数=计数/3= 8/3 = 2.666666666666667;

============== =============3 ============== ==============

最后:

我只想看到那些数据的排序,第一个用户没有的和按标记排序+结果:

因此,我将有下一句:

来自第一用户:

2-5-4

来自第二个用户:

3-4-6

3-6-10

然后根据标记+结果和进行排序,最后我们将使用

1: 3-6-10,原因:(10+2.666666666666667= 12.666666666666667)

2: 2-5-4,原因:(4+5.5= 9.5)

3: 3-3-3,原因:(3+2.666666666666667= 5.666666666666667)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-16 00:45:00

获取匹配用户的列表

代码语言:javascript
复制
select t.user, count(*) as NumMatches
from table t join
     table t1
     on t.data = t1.data and
        t.mark = t1.mark and
        t1.userid = 1 and
        t.userid <> 1
group by t.user;

为了得到他们的细节,我们必须重新加入:

代码语言:javascript
复制
select tu.*
from (select t.user, count(*) as NumMatches
      from table t join
           table t1
           on t.data = t1.data and
              t.mark = t1.mark and
              t1.userid = 1 and
              t.userid <> 1
      group by t.user
     ) tu join
     table t
     on tu.user = t.user
order by t.NumMatches desc, t.user;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21805623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档