Как отсортировать по десятичному с простым кодом SQL? (Заказ по заявлению, SQLite) - PullRequest
0 голосов
/ 25 июня 2018

У меня есть следующий короткий код SQL, и я полностью застрял.

SELECT Purchases_FULL_LOCKED.Purchase_Price, 
Customers_Details_FULL_LOCKED.first_name, 
Customers_Details_FULL_LOCKED.last_name
FROM Purchases_FULL_LOCKED
LEFT JOIN Customers_Details_FULL_LOCKED ON Purchases_FULL_LOCKED.Cust_ID = 
Customers_Details_FULL_LOCKED.customer_id
WHERE Customers_Details_FULL_LOCKED.first_name IS NOT NULL
ORDER BY Purchases_FULL_LOCKED.Purchase_Price desc;

То, что он в основном делает, возвращает цену, которую пользователь заплатил за элемент, и его полное имя, где значенияконечно, не равны нулю.

Однако, когда я заказываю его по убыванию (так как мне нужно выяснить топ-50 трат), значение 99,99, по-видимому, самое большее, где есть значения, такие как 149,99, которые являются подходящими.внизу списка.

Извините, если это плохо структурированный вопрос, я новичок здесь и новичок в SQL, но любая помощь может быть удивительной.

Пример вывода: 1

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Это происходит потому, что значение сохраняется в виде числа.Самый простой способ - преобразовать значение в число:

order by Purchases_FULL_LOCKED.Purchase_Price + 0 desc
0 голосов
/ 25 июня 2018

Я полагаю, что, возможно, ваш столбец 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;

Я ввел псевдонимы таблиц, которые значительно облегчают чтение запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...