SQL 得到 less/between 比十进制 (13,6) 的值

SQL getting less/between than value from decimal (13,6)

我正在尝试为我正在制作的图表获取介于 0 和 10,000 之间的值 但首先我需要让它在 MySQL 中工作,该列称为 totalExcl 并且类型 = decimal(13,6)

正常情况下,当我执行 AND o.total_paid_tax_excl BETWEEN (1.00) AND (10.0000) 时它可以工作,但这不适用于 decimal(13,6)

这就是我的 table 的样子,但结果更多!

╔══════════════ ╦═════════╗
║   count       ║ lastname║
╠══════════════ ╬═════════╣
║ 798.500000    ║ Honny   ║
╚══════════════ ╩═════════╝
╠══════════════ ╬═════════╣
║ 126108.710000 ║ Bont    ║
╚══════════════ ╩═════════╝

我想从列名中获取一个值'count'一个介于 1 和 10.000 之间的值

谢谢

SELECT 
    SUM(o.total_paid_tax_excl) AS count,
    IFNULL(CONCAT(e.firstname, ' ', e.lastname),
            'Web order') AS lastname
FROM
    ex.ps_orders o
        LEFT JOIN
    ex.ps_oxo_quotation q ON o.id_order = q.idOrder
        LEFT JOIN
    ex.ps_employee e ON q.idEmployee = e.id_employee
WHERE
    current_state IN (3 , 4, 5, 9, 13, 15, 20, 22, 23, 24, 25, 121) 
GROUP BY q.idEmployee
ORDER BY count DESC

使用BETWEEN

WHERE test_column BETWEEN
    low_value AND high_value

或使用等价物

WHERE (test_column >= low_value)
    AND (test_column <= high_value)

你用的应该是

AND o.total_paid_tax_excl BETWEEN '1' AND '10000'

试试这个:

SELECT
exe.*
FROM
(
SELECT 
    SUM(o.total_paid_tax_excl) AS count,
    IFNULL(CONCAT(e.firstname, ' ', e.lastname),
            'Web order') AS lastname
FROM
    ex.ps_orders o
        LEFT JOIN
    ex.ps_oxo_quotation q ON o.id_order = q.idOrder
        LEFT JOIN
    ex.ps_employee e ON q.idEmployee = e.id_employee
WHERE
    current_state IN (3 , 4, 5, 9, 13, 15, 20, 22, 23, 24, 25, 121) 
GROUP BY q.idEmployee
ORDER BY count DESC
) exe
where exe.count between 1 and 10000;

比使用子查询更简单:

SELECT 
    SUM(o.total_paid_tax_excl) AS count,
    IFNULL(CONCAT(e.firstname, ' ', e.lastname), 'Web order') AS lastname
FROM ex.ps_orders o
LEFT JOIN ex.ps_oxo_quotation q ON o.id_order = q.idOrder
LEFT JOIN ex.ps_employee e ON q.idEmployee = e.id_employee
WHERE current_state IN (3, 4, 5, 9, 13, 15, 20, 22, 23, 24, 25, 121) 
GROUP BY q.idEmployee
HAVING count between 1.00 and 10.000;

警告:如果 total_paid_tax_exclFLOATDOUBLE,您可能会遇到舍入问题。

current_state 中的 table 是什么?这对于设计最佳索引可能很重要。