如何解决如何使用MySQL计算显示在两列中的WordPress中的元值?
我正在运行SQL命令以计算多个Wordpress元值,但是我却获得了所需的其他形式
select
sum(um.meta_value = '< 2000') '2000',sum(um.meta_value = '2000-3499') '2000-3499',sum(um.meta_value = '3500-4999') '3500-4999',sum(um.meta_value = '5000-7499') '5000-7499',sum(um.meta_value = '7500-9999') '7500-9999',sum(um.meta_value = '10000 >') '10000>'
from wp_usermeta um
join wp_users u on u.id = um.user_id
where um.meta_key = 'income-range'
我得到的输出:
我需要它显示如下:
select
um.meta_value,SUM(CASE WHEN (um.meta_value = '< 2000') THEN 1 END) AS '<2000',SUM(CASE WHEN (um.meta_value = '2000-3499') THEN 1 END) AS '2000-3499',SUM(CASE WHEN (um.meta_value = '3500-4999') THEN 1 END) AS '3500-4999',SUM(CASE WHEN (um.meta_value = '5000-7499') THEN 1 END) AS '5000-7499',SUM(CASE WHEN (um.meta_value = '7500-9999') THEN 1 END) AS '7500-9999',SUM(CASE WHEN (um.meta_value = 'c') THEN 1 END) AS '7500-9999'
from wp_usermeta um
left join wp_users u on u.id = um.user_id
where um.meta_key = 'income-range'
GROUP BY um.meta_value
我也不喜欢此输出,因此它必须是两列:
解决方法
您似乎想要简单的聚合,也许可以使用case
表达式来实现转码:
select
case um.meta_value
when 'c' then '> 10000'
else um.meta_value
end as income_range
count(*) total
from wp_usermeta um
join wp_users u on u.id = um.user_id
where um.meta_key = 'income-range'
group by income_range
,
我基本上对特定的meta_key进行了一次计数,并对元值进行了分组。
SELECT meta_value,COUNT( * ) c FROM wp_usermeta um WHERE meta_key = 'income-range' GROUP BY meta_value
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。