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,我按照这篇文章的建议尝试了投射,但无济于事.
您按数量订购.因为它没有聚合,所以您从每个组中获取任意值.你需要按总额订购.一种方法是:
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)
| 归档时间: |
|
| 查看次数: |
1148 次 |
| 最近记录: |