簡體   English   中英

如何在mysql查詢的列中打印基於條件的值

[英]how to print condition based values in column in mysql query

我在表中有三列“名稱”,“交易”和“得分”。 數據示例:

name    trade     score
name1   trade1     10
name2   trade1     5
name3   trade1     20
name4   trade1     15

我想獲得名稱為status的結果,其中status可以具有三個值之一,即“平均值”,“高於平均值”和“低於平均值”。 其中平均值是“得分”列的平均值。 根據以上數據,平均得分為12.5。 因此預期的結果將是這樣的:

name     status
name1    below average
name2    below average
name3    above average
name4    above average

我不確定是否可以通過單個查詢或某些存儲過程或函數來實現。 請提出建議。

您可以使用以下查詢:

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

在這里演示

SELECT
    a.name,
    CASE
        WHEN a.score < t.average THEN 'below average'
        WHEN a.score > t.average THEN 'above average'
        ELSE 'average'
    END AS status
FROM
    table1 a,
    (SELECT AVG(score) average FROM table1) t

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM