我正在尝试为学校编写一个程序,但我一直遇到错误或输出错误。这就是输出的外观,这是我的代码和输出。
select OrderID,ItemID, price,
CONCAT($,ROUND($, 0.06*a.price)) as 'sales tax',
CONCAT ($,ROUND($, a.price + 0.06*a.price)) as 'sub total'
from ORDER_ITEM a where a.ItemID= ItemID and a.price>=15 and a.price <=20
OrderID ItemID price sales tax sub total
----------- ----------- --------------------------------------- ----------------
1004 1003 15.50 0.000.00 0.000.00
1036 1046 15.00 0.000.00 0.000.00
1036 1049 20.00 0.000.00 0.000.00
设置价格,“营业税”和“小计”列的格式,以包括美元符号。同时缩短这些列。最后,将“营业税”和“小计”列四舍五入到小数点后两位。提示:有几种方法可以解决此问题。一种方法是使用ROUND函数。另一个是将价格,营业税和小计转换为货币数据类型。每种方法都涉及嵌套多个功能。请记住在这里进行迭代。我的输出如下所示:
orderid itemid price Sales Tax Subtotal
----------- ----------- ----------- ----------- -----------
1004 1003 $15.50 $0.93 $16.43
1036 1046 $15.00 $0.90 $15.90
1036 1049 $20.00 $1.20 $21.20
任何人都可以帮助plz。
答案 0 :(得分:0)
您的查询距离不远,但是您确实需要指定要舍入到小数点后几位并将$用单引号引起来,否则mysql会认为您是在指一列。因此给定
drop table if exists t;
create table t
(OrderID int,ItemID int, price varchar(10));
insert into t values
(1,1,'10.00'),(1034,2,'15.50'),(1036,3,'15.00'),(1037,4,'20.00'),(5,5,'21.00');
固定查询
select OrderID,ItemID, concat('$',price) price,
CONCAT('$',round(0.06*a.price,2)) as 'sales tax',
CONCAT ('$',ROUND(a.price + 0.06*a.price,2)) as 'sub total'
from t a
where a.price>=15 and a.price <=20
结果
+---------+--------+--------+-----------+-----------+
| OrderID | ItemID | price | sales tax | sub total |
+---------+--------+--------+-----------+-----------+
| 1034 | 2 | $15.50 | $0.93 | $16.43 |
| 1036 | 3 | $15.00 | $0.90 | $15.90 |
| 1037 | 4 | $20.00 | $1.20 | $21.20 |
+---------+--------+--------+-----------+-----------+
3 rows in set (0.00 sec)