我正在努力实现动态 Highcharts 图表 - 基本列,我需要帮助在 MySQL 中制作 SQL。我需要从当前月份开始的过去 12 个月的结果(无论该月的任何数据(它可以是 0 - 但应该获取所有 12 个月的记录)),显示有多少成员(4 种类型的用户)注册了特定月份的网站。
有 4 种类型的用户:
- 代理
- 个人
- 建筑商
- 房地产公司
对于 Months 列,它应该检索当前月份的最后 12 个月 - 八月、九月、十月、十一月、十二月、一月、二月、三月、四月、五月、六月、七月。
我尝试过以下查询:
SELECT
CASE WHEN u.`userTypeID`=1 THEN COUNT(`userTypeID`) ELSE 0 END AS agent,
CASE WHEN u.`userTypeID`=2 THEN COUNT(`userTypeID`) ELSE 0 END AS individuals,
CASE WHEN u.`userTypeID`=3 THEN COUNT(`userTypeID`) ELSE 0 END AS builders,
CASE WHEN u.`userTypeID`=4 THEN COUNT(`userTypeID`) ELSE 0 END AS real_estate_companies,
u.`userRegistredDate` AS 'timestamp'
FROM `dp_users` AS u
LEFT JOIN `dp_user_types` AS ut ON u.`userTypeID` = ut.`type_id`
WHERE u.`userRegistredDate` < Now( )
AND u.`userRegistredDate` > DATE_ADD( Now( ) , INTERVAL -12 MONTH )
GROUP BY DATE_FORMAT( u.`userRegistredDate`, '%b' )
输出(不正确):
| AGENT | INDIVIDUALS | BUILDERS | REAL_ESTATE_COMPANIES | TIMESTAMP |
----------------------------------------------------------------------------------------
| 0 | 0 | 9 | 0 | July, 01 2013 17:14:35+0000 |
| 3 | 0 | 0 | 0 | May, 15 2013 14:14:26+0000 |
输出(必填:正确):
| AGENT | INDIVIDUALS | BUILDERS | REAL_ESTATE_COMPANIES | TIMESTAMP |
----------------------------------------------------------------------------------------
| 3 | 2 | 2 | 2 | July, 01 2013 17:14:35+0000 |
| 1 | 2 | 0 | 0 | May, 15 2013 14:14:26+0000 |
我尝试的另一种方法是使用子查询,请在下面找到两个示例链接:
http://sqlfiddle.com/#!2/ed101/53 http://sqlfiddle.com/#!2/ed101/54
希望能找到好的解决办法,谢谢。