【问题标题】:mysql order items not working in my querymysql 订单项在我的查询中不起作用
【发布时间】:2020-04-28 15:13:30
【问题描述】:

我有下面的代码,但我的查询没有按预期排序项目。

我的列被声明为DOUBLE

查询:

Select VendorName, format(SUM(Order_Quantity*Net_price),2) as Total_Purchase 
from purchases 
group by VendorName 
order by Total_Purchase desc;

【问题讨论】:

  • 您按字符串排序(因为 Format function 输出字符串)。字符串排序不同于数字排序。而是按SUM(Order_Quantity*Net_price) 排序 - 即按实际数值排序,而不是它的格式化演示版本。
  • P.S.我认为在大多数情况下,您的 SQL 查询应该只输出原始数字。任何展示性的东西,例如添加逗号等,都应该由正在向用户进行数据最终展示的任何工具/应用程序来完成。

标签: mysql sql sql-order-by


【解决方案1】:

Format 函数返回一个字符串,因此排序不符合预期。您可以使用 round 函数获得相同的效果,而无需将其转换为字符串。

Select VendorName, ROUND(SUM(Order_Quantity*Net_price),2) as Total_Purchase 
from purchases 
group by VendorName 
order by Total_Purchase desc;

编辑:如果你真的需要格式化,你可以使用这样的东西:

select VendorName, format(Total_Purchase_Int, 2) as Total_Purchase
from (
  Select VendorName, ROUND(SUM(Order_Quantity*Net_price),2) as 
  Total_Purchase_Int 
  from purchases 
  group by VendorName 
  order by Total_Purchase desc
) as temp_purchase_table;

【讨论】:

  • 除了它不会添加逗号,这大概是 OP 想要的
  • 是的。如果需要,我们也可以通过将其包装在选择查询中来获取格式。
【解决方案2】:

您可以选择format(SUM(Order_Quantity*Net_price),2)order by SUM(Order_Quantity*Net_price) desc

Select VendorName, format(SUM(Order_Quantity*Net_price),2) as Total_Purchase 
from purchases 
group by VendorName 
order by SUM(Order_Quantity*Net_price) desc;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    • 2013-05-07
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多