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

标签 mysql sql wordpress

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

仅当 meta_key = image 时,我才需要对所有元值“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

最佳答案

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

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

关于MySQL - 根据另一个列值搜索列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13257548/

相关文章:

php - 如何使用 CodeIgniter 的 URL 参数将项目插入数据库?

mysql - 使用 Oracle 防止重复记录将垂直数据显示为水平数据

php - wordpress:polylang 插件的媒体库问题

mysql jdbc 连接失败 isValid

mysql - 如何按每列不同优先级的多列排序?

sql - ALTER COLUMN 命令 SQL

sql - MS SQL 到 MySQL

sql - SQL中一个字段的多个条件计数

php - 在 WordPress 中,post_parent 返回 0

php - 输入地址时 WordPress 出现 404 Not Found 错误