我有一个users
表,它有end_date
列,如果它是NULL
,这意味着用户是活动的,如果它有一个日期戳,他不再是活动的。
我想按国家和城市对用户进行分组,并显示活动用户总数和非活动用户总数。
我已经有了显示非活动用户数量的查询:
UserData::select(
DB::raw('count(*) as not_active, country, city'))
->whereNotNull('end_date')
->groupBy('country', 'city')
->paginate('150');
上面的查询为每个组添加了一列非活动用户,但我找不到如何在上面的查询中添加第二列(带分页),以显示每个组中仍然活动的用户数。
下面的查询确实获得了正确的列,但是是单独的,我没有找到如何将它与分页查询合并:
UserData::select(
DB::raw('count(*) as active, country, city'))
->whereNull('end_date')
->groupBy('country', 'city')
结果应如下所示:
country | city | active | not active
------------|-----------|--------|------------
Sweden | Stockholm | 5 | 1
Switzerland | Bern | 3 | 13
1条答案
按热度按时间xzlaal3s1#
您可以使用
SUM
与CASE WHEN
的组合。