微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL sum money withcurrency

如何解决SQL sum money withcurrency

enter image description here

如果我想查询显示居住在槟城的客户数量以及他们的收入总和,我应该怎么做?

SELECT COUNT(Cust_state),SUM(Cust_income)
FROM Customer
WHERE Cust_state = ‘Penang’;

这不起作用,因为 Cust_income 中的值前面有 $。

编辑:Cust_income 的数据类型是 varchar2。

解决方法

如果您将适当的格式掩码应用于 TO_NUMBER 函数,那么您可以执行以下操作(第 1 - 4 行中的示例数据;查询从第 5 行开始):

SQL> with customer (cust_id,cust_income) as
  2    (select 1,'$1000' from dual union all
  3     select 4,'$1600' from dual
  4    )
  5  select sum(to_number(cust_income,'$9999999999')) sum_income
  6  from customer;

SUM_INCOME
----------
      2600

SQL>
,

如果您将值存储为字符串,那么您应该修复数据!不要将数值存储为字符串——您始终可以出于输出目的添加货币。

你可以这样做:

SELECT COUNT(Cust_state),SUM(CAST(REPLACE(Cust_income,'$','') as NUMERIC(20,4))
FROM Customer
WHERE Cust_state = 'Penang';

使用适合收入的任何类型。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。