mysql - 用于在 Highcharts 图表上显示记录的 SQL 查询

标签 mysql sql

我正在努力实现动态 Highcharts 图 - 基本列,我需要帮助在 MySQL 中制作 SQL。我需要最近 12 个月的结果(不管该月的任何数据(它可以是 0 – 但应该获取所有 12 个月的记录))从当月显示有多少成员(4 种类型的用户)在特定月份的网站。

有四种类型的用户:

  1. 代理
  2. 个人
  3. build 者
  4. 房地产公司

对于月份列,它应该检索当前月份的最后 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

希望找到有利的解决方案,谢谢。

最佳答案

试试这个

    SELECT month(u.`userRegistredDate`),
sum(CASE WHEN u.`userTypeID`=1 THEN 1 ELSE 0 END) AS agent,
sum(CASE WHEN u.`userTypeID`=2 THEN 1 ELSE 0 END) AS individuals,
sum(CASE WHEN u.`userTypeID`=3 THEN 1 ELSE 0 END) AS builders,
sum(CASE WHEN u.`userTypeID`=4 THEN 1 ELSE 0 END) AS real_estate_companies,
 u.`userRegistredDate` AS 'timestamp',m.month
FROM (
SELECT 'January' AS
MONTH
UNION SELECT 'February' AS
MONTH
UNION SELECT 'March' AS
MONTH
UNION SELECT 'April' AS
MONTH
UNION SELECT 'May' AS
MONTH
UNION SELECT 'June' AS
MONTH
UNION SELECT 'July' AS
MONTH
UNION SELECT 'August' AS
MONTH
UNION SELECT 'September' AS
MONTH
UNION SELECT 'October' AS
MONTH
UNION SELECT 'November' AS
MONTH
UNION SELECT 'December' AS
MONTH
) AS m
left join `dp_users` AS u  ON m.month = MONTHNAME(u.`userRegistredDate`) and u.`userRegistredDate` < Now( )
AND u.`userRegistredDate` > DATE_ADD( Now( ) , INTERVAL -12 MONTH )
LEFT JOIN `dp_user_types` AS ut ON u.`userTypeID` = ut.`type_id`

GROUP BY  m.month
order by FIELD(m.month,'July','August','September','October','November','December','January','February','March','April','May','June')

请查看此 link

关于mysql - 用于在 Highcharts 图表上显示记录的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17963937/

相关文章:

python - 如何检查数据库是否存在于 PyMySQL 中

mysql - 删除巨大的mysql表中的所有字段

php - MySQL查询错误: "You have an error in your SQL syntax; ..."

mysql - 如何从单个组中获取最后一条记录

mysql - 如何在 SQL 百分位窗口函数上添加条件?

php - 在一种情况下根据特定列的不同返回结果

mysql - 在逗号分隔值列中查找逗号分隔子组的最佳 mysql 查询是什么

php - 对于每个循环 PHP,插入 SQL 而不插入数据

Mysql:如果可能的话,拆分表是否更好?

php - 我是否足以保护我的网站免受 sql 注入(inject)?