【问题标题】:select avg(),min(),max(),toatl(),count() of selected result选择所选结果的 avg(),min(),max(),toatl(),count()
【发布时间】:2016-03-21 23:09:16
【问题描述】:

我正在尝试计算平均值、最小值、最大值、总数、计数,但我得到了错误的结果。

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 等作为现在选择的结果 我得到了我所期望的,但我想显示所有选定的列 一张桌子怎么办。

预期结果

上述查询的结果是

【问题讨论】:

  • 替换 t0.brandid=null 为 null
  • @TheGameiswar,确保它是t0.brandId is nullisnull 之间的空格很重要。
  • 是的,那是类型,我早就编辑过了

标签: sql-server-2008


【解决方案1】:

首先。据我对 SQL 的最了解,null 不等于 null。所以你需要使用is null 来检查值是否等于null。 第二。你能解释一下带下划线的值有什么问题吗?

【讨论】:

  • 我已经更新了我的查询和预期结果,请你帮忙
  • 如果您仅按brandName 列分组,您似乎可以获得预期的结果
  • 如果我没有按所有选定的列添加分组,我将根据用户输入构建查询,我收到错误,所以我按所有选定的列分组。如何将两者结合并显示在一个表格中。
  • 尝试将字段列表缩减为品牌名称和聚合函数。并看结果。 IE。尝试执行select brandName, average(to.brandId) ..... group by brandName
  • 我的第一个查询如您所说,查询的结果不是预期的结果,我必须找出结果的 avg() 等。你能帮我加入这两个选择语句并在一个表中显示结果吗?我已经完成了其余的结果。但如果我进行联合,则会收到错误消息“使用 UNION、INTERSECT 或 EXCEPT 运算符组合的所有查询必须在其目标列表中具有相同数量的表达式。”
【解决方案2】:

您返回一行的第一个查询看起来是正确的。您获得许多行的第二个屏幕截图看起来您正在使用WINDOWING 函数(即任何带有OVER 子句的东西)。这不会聚合数据,它会返回所有行并在返回每一行的同时在集合上重复计算

您能否包含产生错误结果的完整查询文本?

另外,它可能是由 brandIdinteger 类型引起的,在这种情况下,对其的所有计算都将使用基于整数的算术(即没有分数)。如果您只期望整数结果,这很好,但如果您需要分数,请尝试使用CAST 将所有出现的brandid 转换为十进制类型,如下所示:CAST(brandId as decimal(18, 8)),然后再进行AVG 和其他计算。

【讨论】:

    猜你喜欢
    • 2013-01-05
    • 2014-05-22
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 2020-02-18
    相关资源
    最近更新 更多