如何使用简单的SQL代码按十进制排序? (按语句排序,SQLite)

时间:2018-06-25 11:17:35

标签: sql database sqlite

我有以下简短的SQL代码,我完全被卡住了。

$str

它的基本作用是返回用户为某项商品支付的价格及其全名,当然,这些值也不为空。

但是,当我通过降序排序(因为我需要找出支出最高的50个支出者)时,值99.99显然是最高的,其中诸如149.99的值在列表中排在后面。

很抱歉,如果这是一个结构不良的问题,我在这里还是SQL的新手,但是任何形式的帮助都将是惊人的。

输出示例:1

2 个答案:

答案 0 :(得分:0)

我建议您的Purchase_Price列当前为文本,因此它按文本排序,而不必按数字顺序。尝试转换为十进制,然后在此列上进行排序:

ORDER BY
    CAST(Purchases_FULL_LOCKED.Purchase_Price AS decimal) DESC;

这是完整的查询:

SELECT
    p.Purchase_Price, 
    c.first_name, 
    c.last_name
FROM Purchases_FULL_LOCKED p
LEFT JOIN Customers_Details_FULL_LOCKED c
    ON p.Cust_ID = c.customer_id
WHERE
    c.first_name IS NOT NULL
ORDER BY
    CAST(p.Purchase_Price AS decimal) DESC;

我引入了表别名,这使查询更易于阅读。

答案 1 :(得分:0)

之所以发生,是因为该值存储为数字。最简单的方法是将值转换为数字:

order by Purchases_FULL_LOCKED.Purchase_Price + 0 desc