Python 选择N个随机记录
我有7200行29个用户,他们参加了10个不同类别的独特请求票证 其中,我需要为每个用户选择N条记录 条件: 比如说,在N行中,40%的行应该是X类的行 其余60%的行应为使用非类别X的行 使用sqlite,到目前为止,我通过尝试“DISTINCT”进行处理,但是有没有办法实现上述目标Python 选择N个随机记录,python,sql,sqlite,Python,Sql,Sqlite,我有7200行29个用户,他们参加了10个不同类别的独特请求票证 其中,我需要为每个用户选择N条记录 条件: 比如说,在N行中,40%的行应该是X类的行 其余60%的行应为使用非类别X的行 使用sqlite,到目前为止,我通过尝试“DISTINCT”进行处理,但是有没有办法实现上述目标 select distinct * from report where category <> 'Editorial' and name in (select distinct name from
select distinct * from report
where category <> 'Editorial'
and
name in (select distinct name from report)
GROUP By name
LIMIT (select count(distinct name) from report)
编辑:我正在使用python完成上述所有操作的其余部分。由于它是一个大数据,我更喜欢sqlite。
如果python中有一种方法,我很乐意了解它。好的,对您的规范仍然有点困惑。这段代码将运行,但我可能不完全理解您在寻找什么:
import sqlite3
conn = sqlite3.connect('users.db')
cur = conn.cursor()
count = cur.execute('SELECT COUNT(id) FROM book')
count = count.fetchone()[0]
total1 = int(count * 0.4)
total2 = int(count * 0.6)
results1 = cur.execute('SELECT users.id from users LIMIT ?',
(total1, )).fetchall()
results2 = cur.execute('SELECT users.id from users LIMIT ?',
(total2, )).fetchall()
考虑使用两个分组的运行计数子查询:1按名称和编辑类别列出所有记录;和2所有记录按名称和非编辑类别分类,并筛选为60%和40%。下表假设具有唯一标识符ID,并将WHERE子句中的N替换为实际数字:
SELECT *
FROM
(
SELECT Report.*
(SELECT Count(*) FROM Report sub1
WHERE sub1.Category = 'Editorial' AND Report.Category = 'Editorial'
AND sub1.Name = Report.Name
AND sub1.ID <= Report.ID) As EditorialRowNo
(SELECT Count(*) FROM Report sub2
WHERE sub2.Category <> 'Editorial' AND Report.Category <> 'Editorial'
AND sub2.Name = Report.Name
AND sub2.ID <= Report.ID) As NonEditorialRowNo
FROM Report
) As dT
WHERE (dT.EditorialRowNo > 0 AND dT.EditorialRowNo <= 0.4 * N)
OR (dT.NonEditorialRowNo > 0 AND dT.NonEditorialRowNo <= 0.6 * N)
ORDER BY dT.Name, dT.Category
看起来您正在寻找sqlite的答案,但这个问题被标记为python。将python与sqlite结合使用可以吗?是的,我在python中使用sqlite来完成所有这些事情。@t-Arbereus如果可以,我如何才能为列出的每个用户做到这一点。?我已经编辑了回复。希望我能理解你在找什么。嗯,它抛出ValueError:参数是不受支持的类型。对不起,有点假密码。你不能在元组中进行乘法,只需在外部进行运算,然后在内部进行传递,是的,也这样做了。我还是犯了同样的错误。你能做一个吗?