如何使用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'

我得到的输出

Output I am getting

我需要它显示如下:

Output I want,Ignore Second Column


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


我也不喜欢此输出,因此它必须是两列:

I don't like this query output either

解决方法

您似乎想要简单的聚合,也许可以使用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