【发布时间】:2020-03-23 00:18:03
【问题描述】:
表格“标签”:
Source Target Weight
#003 blitzkrank 0.83
#003 deutsch 0.7
#003 brammen 0.57
#003 butzfrauen 0.55
#003 solaaaa 0.5
#003 moments 0.3
college scandal 1.15
college prosecutors 0.82
college students 0.41
college usc 0.33
college full house 0.17
college friends 0.08
college house 0.5
college friend 0.01
该表在“源”列中有 5.600.000 行和约 91.000 个唯一条目。
对于“源”和“目标”中的每个唯一值,我需要按权重排序的前 x% 行(例如前 20%、前 30%,需要可变)(表格按“源”排序(升序)和“重量”(降序)。
- 如果行具有相同的“权重”,则按字母顺序排列行。
- 如果 x% == 0 至少占用一行。
由于会有重复项(例如,“Source = "college" 将产生至少一个重复行作为 "Target" = "scandal"),因此应尽可能删除重复条目。否则没什么大不了的。
“来源”的计算:
6 rows where Source = "#003", 6 * 0.2 = 1.2 = take 1 row
8 rows where Source = "college", 8 * 0.2 = 1.6 = take 2 rows
“来源”所需的结果表:
Source Target Weight
#003 blitzkrank 0.83
college scandal 1.15
college prosecutors 0.82
如何在 SQLite 数据库的 SQL 中做到这一点?
【问题讨论】:
-
“对于“源”和“目标”中的每个唯一值,我需要前 x% 行“我不明白你的意思。您的意思是“一对”值吗?一行是否可以重复,一次用于源,一次用于目标?
-
一行可以对源重复一次,对目标重复一次,是的。
标签: sql sqlite greatest-n-per-group percentage