SQL家庭作业#4

时间:2019-03-02 04:31:18

标签: mysql

我正在尝试为学校编写一个程序,但我一直遇到错误或输出错误。这就是输出的外观,这是我的代码和输出。

  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。

1 个答案:

答案 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)