sql语句 订单表有很多人下单,我现在要找每个人后一半下单的数据 ,如A下4单则列出后2单,B下10单则列出后5单,C下5单则列出后3单
时间: 2024-03-16 22:41:32 浏览: 53
好的,你可以使用 SQL 语句来查询每个人后一半下单的数据。假设你的订单表名为 `orders`,其中包含了下单人名字(`name`)和下单数量(`quantity`)两个字段,你可以使用以下 SQL 语句来查询每个人后一半下单的数据:
```
SELECT name, SUBSTRING_INDEX(GROUP_CONCAT(quantity ORDER BY id DESC), ',', (quantity+1)/2) AS last_half_orders
FROM orders
GROUP BY name
```
这个 SQL 语句会分组查询每个下单人的订单信息,并使用 `GROUP_CONCAT` 函数将每个人的订单数量按照订单 id 倒序拼接成一个字符串。然后,使用 `SUBSTRING_INDEX` 函数和 `/` 运算符来截取每个人订单数量的后一半,并将结果命名为 `last_half_orders`。
需要注意的是,由于订单数量可能是奇数,所以在计算后一半订单数量时需要将 `(quantity+1)/2`,而不是 `quantity/2`。
最后,我们将每个下单人的姓名和后一半订单数量的结果进行输出,以便你更方便地查看结果。
相关问题
2.订单表有很多人下单,我现在要找每个人后一半下单的数据 ,如A下4单则列出后2单,B下10单则列出后5单,C下5单则列出后3单 。1.某奶粉品牌有以下销售数据(订单表OrderInfo) CustomerID OrderID Sales Quantity OrderDate A 01 100 1 2017-03-01 A 02 420 3 2017-03-15 B 03 300 4 2017-03-02 B 04 1000 1 2017-04-01 C 05 500 3 2017-05-03 C 06 200 1 2017-05-04
好的,你可以使用 SQL 语句来查询每个人后一半下单的数据。假设你的订单表名为 `orders`,其中包含了下单人名字(`name`)和下单数量(`quantity`)两个字段,你可以使用以下 SQL 语句来查询每个人后一半下单的数据:
```
SELECT name, SUBSTRING_INDEX(GROUP_CONCAT(quantity ORDER BY OrderDate DESC), ',', quantity / 2) AS last_half_orders
FROM orders
GROUP BY name
```
这个 SQL 语句会分组查询每个下单人的订单信息,并使用 `GROUP_CONCAT` 函数将每个人的订单数量按照下单时间倒序拼接成一个字符串。然后,使用 `SUBSTRING_INDEX` 函数和 `/` 运算符来截取每个人订单数量的后一半,并将结果命名为 `last_half_orders`。
最后,我们将每个下单人的姓名和后一半订单数量的结果进行输出,以便你更方便地查看结果。
阅读全文