2012-11-06 33 views
1

我有以下SQL语句来计算基于3个Wordpress表格的几个字段。我需要的是计算SUMAVG哪些在下面的声明中不起作用。MySQL - 基于另一列值搜索列值

只有当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 
+0

在avg语句中将1更改为null。空值不计入集合中。 – Laurence

回答

1

可能有办法在mysql中简化这个。您可能需要根据它的类型投出meta_value,但要对数据的子集进行平均,请使用null来忽略:

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

谢谢,这是我所需要的。 – qebas