首页 > 解决方案 > 如何从表 mariadb 中选择 %

问题描述

我有一张桌子,可以说它有 100 行。

| id   | table 1 |
| 1    | blaabla |
| 2    | blaabla |
..
| 100  | blaabla |

我如何选择 10% 的行?

标签: sqlmariadb

解决方案


考虑用于百分比计算的ROW_NUMBER窗口函数。COUNTMariaDB 从 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%,将默认值替换ASCDESC. 此外,您可以添加PARTITION BY到两个窗口函数中,以在每个分组切片OVER()中添加 10% 的分组列!


推荐阅读