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
时间: 2024-04-07 13:31:48 浏览: 93
好的,你可以使用 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`。
最后,我们将每个下单人的姓名和后一半订单数量的结果进行输出,以便你更方便地查看结果。
相关问题
订单表有很多人下单,我现在要找每个人后一半下单的数据 ,如A下4单则列出后2单,B下10单则列出后5单,C下5单则列出后3单
好的,你可以使用 SQL 语句来查询每个人后一半下单的数据。假设你的订单表名为 orders,其中包含了下单人名字(name)和下单数量(quantity)两个字段,你可以使用以下 SQL 语句来查询每个人后一半下单的数据:
```
SELECT name, quantity
FROM orders
WHERE quantity > 1 AND (
quantity % 2 = 0 AND quantity / 2 <= 2 OR
quantity % 2 = 1 AND (quantity - 1) / 2 + 1 <= 2
)
ORDER BY name, quantity DESC
```
这个 SQL 语句会筛选出下单数量大于 1 的订单,并且按照下单人名字和下单数量倒序排列。其中,根据题意,我们需要找出每个人后一半下单的数据,因此使用了一些条件来进行筛选:
- 如果下单数量是偶数,则需要满足下单数量一半小于等于 2。
- 如果下单数量是奇数,则需要满足下单数量减一的一半加一小于等于 2。
最后,我们将满足条件的结果按照下单人名字和下单数量倒序排列,以便你更方便地查看结果。
sql语句 订单表有很多人下单,我现在要找每个人后一半下单的数据 ,如A下4单则列出后2单,B下10单则列出后5单,C下5单则列出后3单
好的,你可以使用 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`。
最后,我们将每个下单人的姓名和后一半订单数量的结果进行输出,以便你更方便地查看结果。
阅读全文