【问题标题】:sql select average from distinct column of tablesql从表的不同列中选择平均值
【发布时间】:2014-12-10 05:13:23
【问题描述】:

在我的桌子上,我有一些这样的 colms,(在另一个 cols 旁边)

col1 | col2
s1   |  5
s1   |  5
s2   |  3
s2   |  3
s2   |  3
s3   |  5
s3   |  5
s4   |  7

我希望 ALL col2 的平均值超过 Distinct col1。 (5+3+5+7)/4=5

【问题讨论】:

  • 您能否分享您期望从这些数据中获得的输出?你的计算和你的文字似乎相互矛盾。

标签: mysql sql sqlcommand


【解决方案1】:

试试这个:

SELECT AVG(T.col2)
FROM 
    (SELECT DISTINCT col1, col2
    FROM yourtable) as T

【讨论】:

    【解决方案2】:

    您将需要一个子查询。这是一种方法:

    select avg(col2)
    from (select distinct col1, col2
          from my_table
         ) t
    

    【讨论】:

      【解决方案3】:

      平均值是一组值的总和除以这些值的数量。在这里,您想除以不同值的计数,因此:

      SELECT SUM(col2)/COUNT (DISTINCT col1)
      FROM   my_table
      

      【讨论】:

      • 亲爱的,你总结了 col2 的所有值,而不是不同 col1 的值。
      • 这是 OP 的 text 所建议的,尽管不是他的例子。让我们向OP进行澄清
      【解决方案4】:

      你可以说

      SELECT col1, AVG( col2 ) FROM my_table GROUP BY col1
      

      【讨论】:

      • 这是错误的,它为每个 col1 不同的元素分别生成 avg!
      【解决方案5】:

      试试

      SELECT AVG(coll2) as Average From myTable Group by Col1,Col2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-16
        • 2016-09-04
        • 2013-03-17
        • 2020-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多