我正在尝试计算平均值,最小值,最大值,总数,计数但我的结果是错误的。
SELECT t0.brandID, t0.brandName, t0.cdt, t0.udt, t0.brandstatus, t0.AddedBy ,
AVG(t0.brandID) AS brandID_AVERAGE,
min(t0.brandid) as branid_min,
MAX(t0.brandid) as brandid_max,
COUNT(t0.brandid) as brandid_count
FROM brands t0
Where t0. brandID=null OR t0. brandName='khasim'
group by t0.brandID,t0.brandName,t0.cdt,t0.udt,t0.brandstatus,t0.AddedBy
select AVG(CAST (brandID AS bigint)) AS brandID_AVERAGE,
min(CAST (brandID AS bigint)) as branid_min,
MAX(CAST (brandID AS bigint)) as brandid_max,
COUNT(CAST (brandID AS bigint)) as brandid_count from
(SELECT t0.brandID, t0.brandName, t0.cdt, t0.udt, t0.brandstatus, t0.AddedBy
FROM brands t0
Where t0. brandID=null OR t0. brandName='budwieser'
group by t0.brandID,t0.brandName,t0.cdt,t0.udt,t0.brandstatus,t0.AddedBy) temptable
我已经更改了我的查询以选择avg等以获得现在选择的结果 我得到了我的期望,但我想显示所有选定的列 一张桌子怎么做。
答案 0 :(得分:0)
您返回一行的第一个查询看起来是正确的。您获得许多行的第二个屏幕截图看起来像是在使用WINDOWING
函数(即任何带有OVER
子句的内容)。这不会聚合数据,它会返回所有行,并在返回每一行时重复集合上的计算。
是否可以包含产生错误结果的完整查询文本?
此外,它可能是brandId
为integer
类型引起的,在这种情况下,对它的所有计算都将使用基于整数的算术(即没有分数)。如果你只想要整数结果,这很好,但如果你需要分数,尝试使用CAST
将brandid
的所有出现转换为十进制类型,如下所示:CAST(brandId as decimal(18, 8))
在执行{之前{1}}和其他计算。
答案 1 :(得分:0)
首先。根据我在SQL中的最佳知识,null不等于null。因此,您需要使用is null
来检查值是否等于null。
其次。你能解释下划线值有什么问题吗?