[英]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.