如何在mysql查询的列中打印基于条件的值

The*_*mol 3 mysql sql average

我在表中有三列“名称”、“交易”和“分数”。数据示例:

name    trade     score
name1   trade1     10
name2   trade1     5
name3   trade1     20
name4   trade1     15
Run Code Online (Sandbox Code Playgroud)

我想得到带有名称、状态的结果,其中状态可以具有三个值之一,即“平均”、“高于平均”和“低于平均”。其中平均值是“分数”列的平均值。现在根据以上数据,平均分是 12.5。所以预期的结果将是这样的:

name     status
name1    below average
name2    below average
name3    above average
name4    above average
Run Code Online (Sandbox Code Playgroud)

我不确定这是否可以通过单个查询或某些存储过程或函数来实现。请建议。

Gio*_*sos 7

您可以使用以下查询:

SELECT name,
       IF (total_score < average_score, 'below average',
          IF(total_score > average_score, 'above average', 'average')) AS status
FROM (          
  SELECT name, 
         SUM(score) AS total_score, 
         (SELECT AVG(score) FROM mytable) AS average_score
  FROM mytable
  GROUP BY name ) AS t
Run Code Online (Sandbox Code Playgroud)

演示在这里