首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么HQL中的SUM返回Long而不是Double?

HQL中的SUM返回Long而不是Double的原因是为了避免精度损失和数据类型转换带来的计算错误。在关系型数据库中,数值类型通常分为整型和浮点型两大类。整型用于表示整数,而浮点型则用于表示带有小数点的数值。

SUM函数用于计算某一列的总和,对于整型列的总和计算是准确的,因为整型列的数据类型是精确的,没有小数点,不会存在精度损失的问题。而对于浮点型列的总和计算,由于浮点型的特性,会引入一定的精度损失。浮点型的数值计算是近似计算,会存在舍入误差,因此使用SUM函数计算浮点型列的总和可能会得到不准确的结果。

为了避免精度损失和计算错误,HQL中的SUM函数将浮点型列的总和以Long类型返回。Long类型是整型的一种,可以保证计算结果的准确性,不会引入舍入误差。

需要注意的是,如果需要获取浮点型列的总和,可以通过使用CAST函数将Long类型的结果转换为Double类型,以满足特定需求。

总之,HQL中的SUM返回Long而不是Double是为了保证计算准确性,避免精度损失和计算错误。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么 useState 返回的是 array 而不是 object?

[count, setCount] = useState(0) 这里可以看到 useState 返回的是一个数组,那么为什么是返回数组而不是返回对象呢?...为什么是返回数组而不是返回对象 要弄懂这个问题要先明白 ES6 的解构赋值,来看 2 个简单的例子: 数组的解构赋值 const foo = [1, 2, 3]; const [one, two, three...,这个问题就很好解释了 如果 useState 返回的是数组,那么使用者可以对数组中的元素命名,代码看起来也比较干净 如果 useState 返回的是对象,在解构对象的时候必须要和 useState 内部实现返回的对象同名...总结 useState 返回的是 array 而不是 object 的原因就是为了降低使用的复杂度,返回数组的话可以直接根据顺序解构,而返回对象的话要想使用多次就得定义别名了 首发自:为什么 useState...返回的是 array 而不是 object?

2.3K20

为什么 Vue 中的 data 属性是一个函数而不是一个对象?

在 Vue.js 中,data 属性通常是一个函数而不是一个对象,这是为了确保每个组件实例都有独立的数据副本。以下是详细解释:1....使用函数确保独立性通过将 data 定义为一个函数并返回一个对象,Vue 可以确保每个组件实例都有自己的数据副本。这样可以避免数据污染和意外的副作用。...}; }});在这个例子中,每个组件实例都会调用 data 函数并获得一个新的数据对象,从而确保数据的独立性。3. 性能优化使用函数返回数据对象还可以提高性能。...这样可以确保每次创建新实例时都生成新的数据对象,而不会影响其他实例。4....总结将 data 定义为一个函数而不是一个对象,可以确保每个组件实例都有独立的数据副本,从而避免数据污染和意外的副作用,同时提高性能。

6000
  • 是否还在疑惑Vue.js中组件的data为什么是函数类型而不是对象类型

    function Vue() { this.data= { name: '张三', age: '21' } } //创建了一个Vue实例返回给...} 组件中data使用函数的情况 其实当我们把组件注册到别的页面上时,也会创建一个Vue实例,就像这个样子 function Vue() { //此处data的值为一个函数,调用时会return返回一个对象...let vm1 =new Vue() //此时的vm1应该是这样的 vm1 = { //这里的data,是先获取了函数Vue中的data(data的值为函数),然后得到了data的返回值 this.data...= new Vue() //此时vm2是这样的 vm2 = { //这里的data,是先获取了函数Vue中的data(data的值为函数),然后得到了data的返回值 data: { name...这是因为这两个实例对象在创建时,是先获得了一个函数,将该函数的返回值作为了自己属性data的值,并且这两个实例对象中data的值在栈中对应的堆中的地址也不一样,所以他们不会互相影响。

    3.5K30

    框架篇-Vue面试题1-为什么 vue 组件中的 data 是函数而不是对象

    在vue组件中data的属性值是函数,如下所示 export default { data() { // data是一个函数,data: function() {}的简写 return...// data是一个对象 name: 'itclanCoder', }, }; 当一个组件被定义,data必须声明为返回一个初始数据对象的函数,因为组件可能被用来创建多个实例 也就是说,在很多页面中...,定义的组件可以复用在多个页面 如果data是一个纯碎的对象,则所有的实例将共享引用同一份data数据对象,无论在哪个组件实例中修改data,都会影响到所有的组件实例 如果data是函数,每次创建一个新实例后...,调用data函数,从而返回初始数据的一个全新副本数据对象 这样每复用一次组件,会返回一份新的data数据,类似于给每个组件实例创建一个私有的数据空间,让各个组件的实例各自独立,互不影响,保持低耦合 可以看下面一段代码...(p1,p2)都指向的是同一份实体 原型下的属性相当于是公有的 修改一个实例对象下的属性,也会造成另一个实例属性跟着改变,这样在组件复用的时候,肯定是不行的,那么改成函数就可以了的,如下代码所示 function

    1.9K20

    初识字节流+实现缓冲字节流OutputStream的主要方法构造方法读关流实现BufferedInputStream实现BufferedOutputStream为什么read()返回的是Int型而不是

    java中的IO流可以分为两种:字符流和字节流 字符流,顾名思义,就是对字符进行操作,只能操作文本文件 字节流,就是对字节进行操作,然而所有文件都是由字节组成的,可以字节流可以操作一切文件...字符流中的两个大类:Reader和Writer 详情可见 https://cloud.tencent.com/developer/article/1036410 简单的Writer和Reader...-1 这里有个特别好用的方法,可以用来知道文件的大小 available():int; 返回文件的字节数 这时就可以用这个方法来定义array的大小,那么就可以一次性读完了 关流 flush...,从数组中一个个读到控制台 输出的缓冲就是把数据存到数组中,再一起写到OutputStream中的缓冲区,最后在刷新 刚刚用这个复制一个11.1M的MP3花了0.6秒,和系统的时间差不多↖(^ω^)...---- 错误的返回了-1 如果扫描到了11111111那么此时将byte->int是-1,如果这样的话,程序就会终止不会进行 为什么read()返回的是Int型而不是byte型呢??

    1.3K80

    Hibernate对象导航语言

    在 Hibernate 提供的各种检索方式中, HQL 是使用最广的一种检索方式....,其中的Husband是实体类的名字,而不是表的名称,后面的属性实体类中的属性名称,而不是表中字段的名称,区分大小写 拓展 where子句中只要是sql语句被能够满足的都是可以写的,比如=, , <,...= null) { session.close(); } } } 部分字段的查询 实体对象的查询返回的是一个实体对象的List集合,我们这里需要查询的是表中的执行字段,而不是全部的字段...,此时的占位符id的值为1 此时查询返回的结果List是一个Object[],其中的元素是name,age,并且是按照hql的语句的查询顺序存储的 //编写hql语句,只查询name和age属性字段 String...(objects[i]); } } 这里查询的是两个字段,返回的结果List中存放的是Object[],但是如果我们查询的只有一个字段,那么返回的结果List中存放的是Object,这个值是你查询的字段的值

    90120

    常用的Hql语句

    // HQL: Hibernate Query Language. // 特点: // >> 1,与SQL相似,SQL中的语法基本上都可以直接使用。...// >> 2,SQL查询的是表和表中的列;HQL查询的是对象与对象中的属性。 // >> 3,HQL的关键字不区分大小写,类名与属性名是区分大小写的。.... // 1,简单的查询,Employee为实体名而不是数据库中的表名(面向对象特性) hql = "FROM Employee"; hql = "FROM Employee AS e"; /.../ 查询多个列,返回的集合的元素类型是Object数组 hql = "SELECT new Employee(e.id,e.name) FROM Employee e"; // 可以使用new语法,指定把查询出的部分属性封装到对象中...() hql = "SELECT COUNT(*) FROM Employee"; // 返回的结果是Long型的 hql = "SELECT min(id) FROM Employee"; // 返回的结果是

    62620

    Hibernate检索1

    (5)本地查询:使用本地数据库的SQL查询语句。 1.2 HQL简介 1.2.1 为什么使用HQL 现在我们回忆一下我们在前一章学习中所遇到的查询问题,如何查询所有的版块?如何查询指定标题的帖子?...(6)内置聚集函数,如sum()、min()、max()等。 (7)可以调用用户自定义函数。 (8)支持子查询。 1.2.2 HQL入门 从示例4.1中我们可以总结出使用HQL的四个步骤: 1....在上例"from Thread as t where t.title like '%鬼吹灯%'" 中 Thread是类名而不是表名,title是Thread的属性名而不是字段名,查询出的也都是对象...){ System.out.println("帖子标题:"+title); } } 单一属性查询,返回结果集属性列表,元素类型和实体类中相应的属性类型一致,但如果是对多个属性的查询HQL查询返回的结果又是什么呢...返回分数最高的六个学生。 C.返回分数最低的五个学生。 D. 返回分数最低的六个学生。 5. 下面HQL语句的含义是()。

    8010

    Hive基础操作

    Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。 本质是:将HQL转化成MapReduce程序。...缺点 1.Hive的HQL表达能力有限 (1)迭代式算法无法表达 (2)数据挖掘方面不擅长 2.Hive的效率比较低 (1)Hive自动生成的MapReduce作业,通常情况下不够智能化 (2)Hive...ARRAY和MAP与Java中的Array和Map类似,而STRUCT与C语言中的Struct类似,它封装了一个命名字段集合,复杂数据类型允许任意层次的嵌套。...它的功能是如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。...,各个组有编号,编号从1开始,对于每一行,NTILE返回此行所属的组的编号。

    47410

    Java是一种纯面向对象的语言吗?

    所有基本类型(char,boolean,byte,short,int,long,float,double)都不是对象,因为我们不能做类似正常对象的所具有的操作(例如:使用“.”来访问对象的属性和方法)。...这也揭开了另一个迷:为什么静态内容在一个对象中(不管是emp还是emp2)改变了,在另一个对象中也同时改变,因为这两个对象改变的都是在 Employee.class 同一个对象里面的内容。...( Java开发人员是Java的最终用户,因为我们正在使用它,而不是创造它 )。...那么,既然说 “JVM”会为所有的基本类型创建一个对象,那我们为什么还那么常用 “原始类型”, 而不是直接使用对应的包装类对象呢?...) 使用实际的例子来说明,为什么我们更应该使用 “原始类型”: “原始类型”有更快的速度(例如,下面的代码执行,在我们的机器上需要9秒,但当我把 Long 改成 long 之后,0秒内就完成了) public

    1K00
    领券