sql - 如何从表 mariadb 中选择 %
问题描述
我有一张桌子,可以说它有 100 行。
| id | table 1 |
| 1 | blaabla |
| 2 | blaabla |
..
| 100 | blaabla |
我如何选择 10% 的行?
解决方案
考虑用于百分比计算的ROW_NUMBER
窗口函数。COUNT
MariaDB 从 10.2 版本开始支持窗口函数。
SELECT
sub.id
, sub.col1
, sub.col2
, sub.col3
FROM
(SELECT
ROW_NUMBER() OVER (ORDER BY id ASC) /
COUNT(*) OVER() AS rn_pct
, id
, col1
, col2
, col3
FROM myTable) sub
WHERE sub.rn_pct <= 0.1
空白OVER()
表示所有行。对于最后 10%,将默认值替换ASC
为DESC
. 此外,您可以添加PARTITION BY
到两个窗口函数中,以在每个分组切片OVER()
中添加 10% 的分组列!
推荐阅读
- node.js - 是否有将 csv 数据导入 mongodb 的 npm 包或 express 内置函数?
- javascript - 从简单数组创建嵌套对象
- javascript - Node.js:使用 excel 获取 + 管道不起作用
- cassandra - 什么可能导致 cassandra 中出现“幽灵”表名?
- javascript - 如何在反应应用程序中使用 i18next 和反应路由器 dom 修补链接?
- c# - 对象集合上的 HashSet
- python - 如何防止功能在鼠标单击时运行,直到上一个完成
- arrays - 在复制活动中使用 JArrays - Azure 数据工厂
- sql - 根据mysql中的另一个活动获取行
- javascript - 如何将所有数组值按顺序放置到一列文本字段中?