MySQL - 根据另一个列值搜索列值

时间:2012-11-06 18:59:35

标签: mysql sql wordpress

我有以下SQL语句来计算基于3个Wordpress表的几个字段。我需要的是计算在下面的语句中不起作用的SUMAVG

我需要在meta_key = image时将所有meta_values'3279'加起来。这同样适用于AVG公式,即在meta_key=odd时平均所有meta_values。

非常感谢任何帮助!

SELECT (user_nicename) AS user,
       SELECT SUM(IF('meta_key' = 'image', 'meta_value' = '3279', 1,0)) AS won,
       SELECT SUM(IF('meta_key' = 'image', 'meta_value' = '3280', 1,0)) AS lost,
       COUNT('meta_key'='odd') AS total,
       FORMAT (AVG('meta_key' = 'odd', 'meta_value'),1) AS 'average odd',
       FORMAT (AVG ('meta_key' = 'bet', 'meta_value'),1) AS 'average bet',
       SUM('meta_key' = 'roi', 'meta_value') AS ROI
FROM wp_postmeta pm, wp_posts p
INNER JOIN wp_posts p ON pm.post_id = p.ID 
INNER JOIN wp_users u ON p.post_author = u.ID
WHERE Month(data) = MONTH(CURRENT_DATE)
GROUP BY (user_nicename)
ORDER BY ROI DESC

1 个答案:

答案 0 :(得分:1)

在mysql中可能有一些方法可以简化这一点。您可能需要根据其类型来转换meta_value,但要对数据子集进行平均,请使用null忽略:

AVG(Case When meta_key = 'odd' Then meta_value else Null End)