小编典典

mysql用户注册组之间的计数

sql

可以说我有一个表’ wp_users‘,其中包含以下数据:

Name            user_registered        ID
dog            2008-05-14 18:53:30     1
cat            2008-05-14 12:13:20     2
mouse          2008-05-14 08:51:32     3
giraffe        2008-05-15 22:13:31     4
Moose          2008-05-16 13:20:30     5
monkey         2008-05-16 08:51:32     6
mongoose       2008-05-16 22:13:31     7
fish           2008-05-16 13:00:30     8

然后,我有另一个表“ wp_usermeta”,其中wp_users.ID == wp_usermeta.user_id

user_id   meta_key               meta_value
1         wp_capabilities            a:1:{s:10:"subscriber";s:1:"1";}
2         wp_capabilities         a:1:{s:15:"s2member_level2";s:1:"1";}
2         wp_s2member_subscr_id    I-SDJKSDD
3         wp_capabilities          a:1:{s:15:"s2member_level2";s:1:"1";}
3         wp_s2member_subscr_id    I-sdfsdfsdf
4         wp_cabilities            a:1:{s:10:"subscriber";s:1:"1";}
5         wp_cabilities            a:1:{s:10:"subscriber";s:1:"1";}
6         wp_cabilities            a:1:{s:10:"subscriber";s:1:"1";}
7         wp_capabilities          a:1:{s:15:"s2member_level2";s:1:"1";}
7         wp_s2member_subscr_id    I-sd45gds
8         wp_capabilities          a:1:{s:15:"s2member_level2";s:1:"1";}
8         wp_s2member_subscr_id    I-3fskkhh

我正在寻找的是一种生成一些汇总列的方法,该列汇总wp_users.user_registered日期中每一天的订户注册数量与s2member_level2注册数量(我不在乎一天中的小时,只关心日期)。为了更好地定义它们:

subscriber”:将不存在行meta_key = wp_s2member_subscr_id-只是不存在。请注意,用户1、4、5和6没有此行,因此它们是“订户”。同样在“
wp_capabilities”行中,他们将使用单词“ subscriber”而不是“
s2member_level2”。不必同时满足这两个条件,因为这两个条件对于所有订户都是正确的(我提到了这两个条件,以防一个比另一个更容易检查)。

s2member_level2”:在一行中确实有meta_key = wp_s2member_subscr_id一些随机字母值(上表中的用户2、3、7、8)。s2member_level2。的值中也将有“
”字样meta_value。不必同时满足这两个条件,因为这两个条件对于所有s2member_level2都是正确的(我提到了这两个条件,以防一个比另一个更容易检查)。

对于上面的示例表,理想的输出将如下所示:

Date              subscriber     s2member_level2
2008-05-14         1              2
2008-05-15         1              0
2008-05-16         2              2

这是这里找到的问题(和答案)的一个更复杂的问题,它只是寻找任何种类的订户总数。这试图区分订户与s2member_level2。我假设可以使用一些精美的join语句来完成此操作,希望能对您有所帮助!


阅读 190

收藏
2021-05-16

共1个答案

小编典典

select date, SUM(case when subscriber = 1 and s2member_level2 = 0 then 1 else 0 end) subscriber,
SUM(case when s2member_level2 = 1 then 1 else 0 end) s2member_level2
from
( select date(user_registered) date,
id,
sum(case when B.meta_key = “wp_capabilities” then 1 else 0 end) as subscriber,
sum(case when B.meta_key = “wp_s2member_subscr_id” then 1 else 0 end) as s2member_level2
from wp_users A LEFT JOIN wp_usermeta B ON A.Id = B.user_id
group by date(user_registered), id
) C
group by date

2021-05-16