【问题标题】:SQL - Retrieve Avg Score from GroupSQL - 从组中检索平均分数
【发布时间】:2017-03-30 16:59:13
【问题描述】:

我的数据库包含以下内容:

|    ID     |     UID      |     file    |    score    |    time   | 
     1    |     a827vgj28df |  jack_123  |      75     |       12:44 
     2    |     ayeskfkfjhk  | jack_999   |      5     |      12:12 
     3     |    b83759       | adam_123   |      7      |      12:12 

目标: 我正在尝试获取显示每个文件前缀(jack/adam)的平均分数的查询

显示如下:

|  Key   |   AVG 
  jack       40 
  adam        7

【问题讨论】:

  • 你尝试了哪个 SQL 语句?
  • @Randy 问题是,我不知道如何抓取文件名前缀“Jack/Adam”,而不抓取整个文件名
  • @TylerEsposito 至少包括一次尝试将帮助我们获得各种信息,例如您的餐桌名称
  • 大多数 SQL 方言包含允许您在字符串中定位字符或字符串的函数,并且它们通常还包含允许您获取字符串值的左侧或右侧部分的函数。如果您不了解这些,请进行一些研究。或者等待足够长的时间,也许有人会回答你未研究的问题。

标签: mysql sql select


【解决方案1】:

您可以使用substring_index 提取名称前缀。从那里开始,这只是avg的简单使用:

SELECT   SUBSTRING_INDEX(file, '_', 1) AS key, AVG(score)
FROM     mytable
GROUP BY SUBSTRING_INDEX(file, '_', 1)

【讨论】:

  • 完美运行!谢谢
【解决方案2】:

您可以使用 SUBSTRING_INDEX 获取密钥,然后按分组

  SELECT
      SUBSTRING_INDEX(file, '_', 1) AS key
      , avg(score) average
  from my_table  
  group by  key

【讨论】:

    【解决方案3】:

    应该是这样的

    select SUBSTRING(file, 1, 4) as Key, AVG(score)
    from table
    group by SUBSTRING(file, 1, 4)
    

    如果你分享你已经尝试过的东西,你将来可能会得到更好的回应。

    【讨论】:

    • 这只有在所有前缀都恰好是四个字符长的情况下才有效。在示例数据中它们是(“jack”,“adam”),但我认为这并不是 OP 真正想要的。
    • 绝对正确。不过,OP 没有具体说明。
    猜你喜欢
    • 2020-02-29
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多