id | produit | qte | amount ---------------------------- 1 | iphone | 15 | 110$ 2 | tablet | 18 | 50$ 3 | laptop | 19 | 250.99$ 4 | Tide | 21 | 10$
如何计算此表中所有这些产品的总金额?
答案 0 :(得分:1)
您可以使用SUM
和REPLACE
SELECT SUM(CAST(REPLACE(amount, '$', '') AS DECIMAL)
FROM table_name
我建议您从列
$
中删除amount
,而不是使用上面的查询!使用这些值的脚本/前端应该知道该列正在使用哪种货币。
如何改进数据库设计/专栏?
使用以下查询从此列中删除所有$
:
UPDATE table_name SET amount = TRIM(REPLACE(amount, '$', ''))
执行following query以获取所有非数字值:
SELECT * FROM table_name WHERE NOT CONCAT('', amount * 1) = amount
如果上面的查询没有返回任何行,您可以ALTER
将您的列类型更改为DECIMAL(6, 2)
或DOUBLE
(可能有浮动数字?):
ALTER TABLE table_name MODIFY COLUMN amount DECIMAL(6, 2)
答案 1 :(得分:1)
您需要更改表格结构,将amount
存储为DOUBLE
,而不是VARCHAR
UPDATE t SET amount = REPLACE(amount, '$','');
ALTER TABLE t MODIFY amount DOUBLE;
然后您可以使用聚合函数SUM
:
SELECT SUM(amount) FROM t