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_excl
是 FLOAT
或 DOUBLE
,您可能会遇到舍入问题。
current_state
中的 table 是什么?这对于设计最佳索引可能很重要。
我正在尝试为我正在制作的图表获取介于 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_excl
是 FLOAT
或 DOUBLE
,您可能会遇到舍入问题。
current_state
中的 table 是什么?这对于设计最佳索引可能很重要。