开发者社区> 问答> 正文

SQL Server如何获取列中唯一值的数量以及每个值的平均得分?

我有这样的桌子

city        metric_name      metric_value   id
Berlin      likes            1              1a
Berlin      dislikes         2              1a 
Berlin      comments         3              1a

Berlin      likes            4              1b
Berlin      dislikes         5              1b
Berlin      comments         3              1b

Hamburg     likes            1              1c
Hamburg     dislikes         2              1c
Hamburg     comments         3              1c

Hamburg     likes            2              1d
Hamburg     dislikes         4              1d
Hamburg     comments         5              1d

等等

My ideal result is this

city        city_count_unique   average_metric_score
Berlin      2                   3 (sum metric_value / sum metric_names)
Hamburg     2                   2,8

我做了什么

我得到了每个城市的不同计数和平均指标值

SELECT AVG(T.metric_value), T.city,
COUNT(*) AS 'city_count_unique'
FROM 
    (SELECT DISTINCT metric_value, city
    FROM dbo.Table) as T
GROUP BY T.city

但这是错误的

感谢任何帮助

更新 还有一个varchar格式的附加列ID

展开
收起
祖安文状元 2020-01-05 14:53:23 411 0
1 条回答
写回答
取消 提交回答
  • OP编辑了该问题,以表明存在一个ID列,该列允许检测度量标准分组。这是使用此更新,而不是假设每个组始终有3个指标。

    SELECT  city,
            COUNT(id) AS city_count_unique,
            CAST(SUM(metric_value_total) AS FLOAT) / SUM(metric_value_count) AS average_metric_score
      FROM  (
            SELECT  city,
                    id,
                    SUM(metric_value) metric_value_total,
                    COUNT(metric_value) AS metric_value_count
              FROM  #Table
              GROUP BY city, id
            ) a
      GROUP BY city
    
    2020-01-05 14:53:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载