SQL 数量字段从大到小排序后累加,达到总值80%
时间: 2023-08-29 13:04:40 浏览: 62
可以使用 SQL 中的窗口函数和子查询来实现这个需求。以下是一个示例 SQL 语句:
```
SELECT id, quantity, cumulative_sum
FROM (
SELECT
id,
quantity,
SUM(quantity) OVER (ORDER BY quantity DESC) AS cumulative_sum,
SUM(quantity) OVER () AS total_sum
FROM table_name
) t
WHERE cumulative_sum <= 0.8 * total_sum
ORDER BY quantity DESC;
```
其中,`table_name` 是要查询的表名,`id` 是每条记录的唯一标识符,`quantity` 是要排序和累加的数量字段。子查询中使用了窗口函数 `SUM()`,通过 `ORDER BY quantity DESC` 按数量字段从大到小排序,并计算出每条记录的累加和 `cumulative_sum` 和总和 `total_sum`。在外部查询中,筛选出累加和小于等于总和的 80% 的记录,并按数量字段从大到小排序输出。
需要注意的是,这里假设每条记录的数量字段都是非负数。如果有负数的情况需要特殊处理。
相关问题
Sql查出40条数据,通过查询数据的某个字段进行从大到小排序
可以使用以下SQL语句进行查询并排序:
```
SELECT * FROM table_name ORDER BY field_name DESC LIMIT 40;
```
其中,`table_name`是你要查询的表名,`field_name`是你要排序的字段名,`DESC`表示按照从大到小的顺序排序,`LIMIT 40`表示只查询前40条数据。如果要按照从小到大的顺序排序,只需要将`DESC`改为`ASC`即可。
hivesql如何按某个字段从小到大排序后取满足某个条件的第一条值
可以使用HiveQL的子查询和LIMIT子句来实现按某个字段从小到大排序后取满足某个条件的第一条值。例如,以下语句将从名为`my_table`的表中选取`status`等于`'ready'`的记录中最小的`value`值:
```
SELECT MIN(value) AS min_value
FROM my_table
WHERE status = 'ready'
ORDER BY value ASC
LIMIT 1;
```
该查询首先使用`WHERE`子句过滤所有`status`等于`'ready'`的记录,然后使用`ORDER BY`子句按`value`列的升序排序结果。最后,`LIMIT`子句限制只返回第一条记录,即最小的`value`值。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)