SQL ORDER BY - 为什么它不能在这里工作?

Nat*_*ara 0 mysql sql sql-order-by

这是我的表格:

+---------------------+--------+----------+
| date                | sku    | quantity |
+---------------------+--------+----------+
| 2017-08-23 14:58:00 | 123333 |        2 |
| 2017-08-23 14:58:00 | 123333 |        1 |
| 2017-08-23 14:58:00 | 123333 |        1 |
| 2017-08-23 14:58:00 | 123337 |        2 |
| 2017-08-23 14:58:00 | 123335 |        1 |
| 2017-08-23 14:58:00 | 123331 |        1 |
| 2017-08-23 14:58:00 | 123332 |        2 |
| 2017-08-23 14:58:00 | 123333 |        1 |
| 2017-08-23 14:58:00 | 123334 |        1 |
| 2017-08-23 14:58:00 | 123334 |        3 |
+---------------------+--------+----------+
Run Code Online (Sandbox Code Playgroud)

我想执行如下的select语句:

select sku,sum(quantity) as 'total quant' from transactions
where DATE(date) between '2017-07-23' and '2017-09-23'
group by sku
order by quantity desc;
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个:

+--------+-------------+
| sku    | total quant |
+--------+-------------+
| 123332 | 2           |
| 123337 | 2           |
| 123333 | 5           |
| 123334 | 4           |
| 123335 | 1           |
| 123331 | 1           |
+--------+-------------+
Run Code Online (Sandbox Code Playgroud)

这不符合我的预期.为什么订单不在这里工作?

SIDE NOTE我的quantity专栏属于数据类型int,我按照这篇文章的建议尝试了投射,但无济于事.

Gor*_*off 6

您按数量订购.因为它没有聚合,所以您从每个组中获取任意值.你需要按总额订购.一种方法是:

order by sum(quantity) desc
Run Code Online (Sandbox Code Playgroud)

但是,我建议指定一个合理的别名(一个不需要转义的别名)并使用它:

select sku,sum(quantity) as total_quantity
from transactions
where DATE(date) between '2017-07-23' and '2017-09-23'
group by sku
order by total_quantity desc;
Run Code Online (Sandbox Code Playgroud)