Php 在mysql中使用两个group by从同一个表中获取数据

Php 在mysql中使用两个group by从同一个表中获取数据,php,mysql,codeigniter,phpmyadmin,Php,Mysql,Codeigniter,Phpmyadmin,我有一个表名作为顾问,有4个字段(id、名称、用户类型、创建日期)。我需要编写一个mysql查询,以返回每个月的用户类型计数。我的表格中的ie用户类型为个人和组(I,G),共10个条目。4名为个人,6名为团体。7月登记了2人,8月登记了2人。4名集团成员于7月注册,2名于8月注册。所以我的输出是 1) 七月份个人登记册的计数? 2) 7月份的团体登记计数? 3) 八月份的个人登记计数? 4) 八月份的个人登记计数 样本表数据 户表 预期结果 我需要在条形图中填充此日期。最近几天我对这个问题有点困

我有一个表名作为顾问,有4个字段(id、名称、用户类型、创建日期)。我需要编写一个mysql查询,以返回每个月的用户类型计数。我的表格中的ie用户类型为个人和组(I,G),共10个条目。4名为个人,6名为团体。7月登记了2人,8月登记了2人。4名集团成员于7月注册,2名于8月注册。所以我的输出是

1) 七月份个人登记册的计数? 2) 7月份的团体登记计数? 3) 八月份的个人登记计数? 4) 八月份的个人登记计数

样本表数据 户表 预期结果 我需要在条形图中填充此日期。最近几天我对这个问题有点困惑。如果可能的话,请帮助我。 提前感谢

首先,您需要从datetime开始按月分组,然后是个人和组

SELECT 
    COUNT(i.id) AS individual_count,
    COUNT(g.id) AS Group_count,
    DATE_FORMAT(u.joined_date, '%M') AS `Month`
FROM usertable AS u
LEFT JOIN usertable AS i ON u.id= i.id AND i.user_type = 'I'
LEFT JOIN usertable AS g ON u.id= g.id AND g.user_type = 'G'

GROUP BY DATE_FORMAT(u.joined_date, '%M')

这会让你得到你想要的结果。

我经常看到“计数”这个词。使用MySQL的聚合函数,还有另一个聚合函数。由于要连接3个表,所以效率要低得多。
individual_count  |Group_count| Month              

----------------------------------

  2               | 4         |  July     
  2               | 2         |  August 
SELECT 
    COUNT(i.id) AS individual_count,
    COUNT(g.id) AS Group_count,
    DATE_FORMAT(u.joined_date, '%M') AS `Month`
FROM usertable AS u
LEFT JOIN usertable AS i ON u.id= i.id AND i.user_type = 'I'
LEFT JOIN usertable AS g ON u.id= g.id AND g.user_type = 'G'

GROUP BY DATE_FORMAT(u.joined_date, '%M')