python - 选择 N 条随机记录

标签 python sql sqlite

我有 7200 行,每行 29 位用户,他们参加了 10 个不同类别的独特请求票。

在其中,我需要为每个用户选择 N 条记录。

条件:

  1. 在 N 行中,40% 的行应该属于类别X,假设是社论。

  2. 其余 60% 的行应该是使用非类别 X

  3. 的行

使用 sqlite,到目前为止,我通过尝试“DISTINCT”来处理,但有没有办法实现上述目标?

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 中有方法,我很乐意了解它。

最佳答案

考虑使用两个分组的运行计数子查询: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

关于python - 选择 N 条随机记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36902113/

相关文章:

mysql - 无法计算所需的结果

sql - 需要监控SQL查询结果的工具

sql - 如何从 PostgreSQL 子查询返回两个值?

Python:SQLAlchemy ImportError:没有名为 pysqlite2 的模块

mysql - 无法在 iOS 中更新 sqlite3 数据库表

python - 如何在 python jinja 模板中输出 loop.counter?

python - 无法将多个字符串添加到列表中

python - 游戏代码中存在缩进问题

python - OpenPyXL - 检查某个单词是否存在于单元格内的一系列单词中

c# - LINQ to Entities 不支持指定的类型成员 'Date'。(使用 Sqlie)