SQL 查询语句,将数据按照某一字段排序并分成三组,其中第一组包含前百分之六十五的数据,第二组包含中百分之十五的数据,第三组包含后百分之二十数据
时间: 2023-03-19 22:21:11 浏览: 127
mysql第五章.pdf
可以使用以下 SQL 查询语句,将数据按照某一字段排序并分成三组,其中第一组包含前百分之六十五的数据,第二组包含中百分之十五的数据,第三组包含后百分之二十数据:
```
SELECT column_name, NTILE(100) OVER (ORDER BY column_name) AS tile
FROM table_name
ORDER BY column_name
```
其中,`column_name` 是按照哪个字段排序,`table_name` 是数据所在的表格名称。
`NTILE(100)` 表示将数据分成 100 组,再通过 `ORDER BY` 对数据进行排序。`AS tile` 为该语句指定一个别名为 `tile`,用于表示数据所在的组别。
接下来,我们可以通过以下语句,将数据按照上述要求分成三组:
```
SELECT *
FROM (
SELECT column_name, NTILE(100) OVER (ORDER BY column_name) AS tile
FROM table_name
ORDER BY column_name
) t
GROUP BY tile
HAVING tile <= 65
OR (tile >= 86 AND tile <= 100)
```
其中,`t` 是上一个语句中的查询结果,通过 `GROUP BY` 将数据按照 `tile` 分组,`HAVING` 子句指定了分组的条件。具体而言,第一组包含前百分之六十五的数据,因此 `tile` 小于等于 65;第三组包含后百分之二十的数据,因此 `tile` 大于等于 86 且小于等于 100;第二组包含中百分之十五的数据,即剩下的分组。
阅读全文