按模糊标准分组
|
有什么办法可以在
SQL
中执行此任务:
有一张像这样的行李箱名称和重量表
cargo_id |行李名|行李重量
------------ + -------------- + ----------------
1 |汤姆| 2
2 |吉| 3
3 | Lil | 4
输出重量小于或等于D单位的一组东西。因此,如果D等于1,我们必须得到
1.汤姆·凯特
2.凯特·利尔
如果D等于2,我们必须得到
1.汤姆·凯特·利尔
如果D为0.5,我们得到
1.汤姆
2.吉
3.律
我试图使用交叉连接:
SELECT t1.luggage_name, t2.luggage_name
FROM Luggages t1, Luggages t2
WHERE ABS(t1.luggage_weight - t2.luggage_weight) <= 1
导致
行李名|行李名
-------------- + --------------
汤姆|汤姆
汤姆|吉
吉|汤姆
吉|吉
吉| l
Lil |吉
Lil | l
SQL
可以解决这个问题吗?
EDIT
好,是的,我们可以写
SELECT t1.luggage_name, t2.luggage_name
FROM Luggages t1, Luggages t2
WHERE ABS(t1.luggage_weight - t2.luggage_weight) <= 1
AND t1.luggage_id < t2.luggage_id
然后我们会得到
行李名|行李名
-------------- + --------------
汤姆|吉
吉| l
这意味着Tom与Kat在一起,而Kat与Lil在一起。
但是,假设我们的桌子都具有相同的权重
cargo_id |行李名|行李重量
------------ + -------------- + ----------------
1 |汤姆| 1个
2 |吉| 1个
3 | Lil | 1个
然后我们会得到
行李名|行李名
-------------- + --------------
汤姆|吉
汤姆| l
吉| l
这意味着汤姆和凯特和利尔在一起是正确的,但是下一组,凯特和利尔在一起已经在第一组中。我考虑了这个问题,无法解决。如何仅输出不同的组?
没有找到相关结果
已邀请:
2 个回复
期差骇蓟
这将删除不需要的对 编辑 您的输出将是
当
时,由于没有小于0.5的差,所以您没有对。与
的输出相比,单例列表实际上是错误的 编辑2:为那些您没有得到的证明...
屑凉赦
这将显示一组没有任何重复项的分组用户,因此如果您有
它们彼此都是D = 1。如果您的查询的D = 1,它将显示
其中显示了整个组Tom-> Kat-> Lil-> Bob。