mysql - 生成一个按月显示 Android 和 iOs 访问者的表格?数据库

标签 mysql sql

我已经解决了显示月份和 Android 用户的查询的一部分,但我似乎找不到加入 iOS 用户的方法。

这是我试图从查询中创建的表:

/Months/   IOS   /Android
|June     |324    |123  |
|July     |123    |23   |
|August   |521    |342  |
|September|712    |342  |

这就是我得到的

/Months   /  IOS  /
|June     |324    |
|July     |123    |
|August   |521    |
|September|712    |

这是我一直在使用的查询

SELECT MONTHNAME(created_at) AS monthy ,
       COUNT(id) as ios 
FROM visitors 
WHERE MID(mobile_uuid,1,3) = 'ios' 
GROUP BY MONTH(created_at);

我想生成数据来填充显示我的应用程序访问者数量的谷歌图表。

我已经尝试了几次连接,现在我已经搜索了 6 个小时。

最佳答案

试试这个查询

SELECT MONTHNAME(created_at) MONTH,
(SELECT COUNT(mobile_uuid)  FROM VISITORS V2 
WHERE MID(mobile_uuid,1,3)='ios' 
AND MONTHNAME(V2.created_at)=MONTHNAME(V1.created_at)) AS IOS,
(SELECT COUNT(mobile_uuid)  from VISITORS v3 
WHERE MID(mobile_uuid,1,3)='adr' 
AND MONTHNAME(V3.created_at)=MONTHNAME(V1.created_at)) AS ANDROID
FROM VISITORS V1 GROUP BY MONTHNAME(created_at) ORDER BY created_at

完整代码

CREATE TABLE visitors (
  id INT NOT NULL AUTO_INCREMENT,
  mobile_uuid VARCHAR(45) NULL,
  created_at DATETIME NULL,
  PRIMARY KEY (id));

INSERT INTO visitors (mobile_uuid, created_at) VALUES ('adrsdf873', '2016-06-15 23:27:07');
INSERT INTO visitors (mobile_uuid, created_at) VALUES ('adrsdf763', '2016-07-15 23:27:07');
INSERT INTO visitors (mobile_uuid, created_at) VALUES ('adrdg6h84', '2016-08-15 23:27:07');
INSERT INTO visitors (mobile_uuid, created_at) VALUES ('iossdf87g', '2016-03-15 23:27:07');
INSERT INTO visitors (mobile_uuid, created_at) VALUES ('adrety895', '2016-03-15 23:27:07');
INSERT INTO visitors (mobile_uuid, created_at) VALUES ('adrd9g87d', '2016-03-15 23:27:07');
INSERT INTO visitors (mobile_uuid, created_at) VALUES ('iossde88g', '2016-06-15 23:27:07');
INSERT INTO visitors (mobile_uuid, created_at) VALUES ('iossge98g', '2016-07-15 23:27:07');
INSERT INTO visitors (mobile_uuid, created_at) VALUES ('iossue78g', '2016-07-15 23:27:07');
INSERT INTO visitors (mobile_uuid, created_at) VALUES ('adrsref763','2016-07-15 23:27:07');
INSERT INTO visitors (mobile_uuid, created_at) VALUES ('iosscf67g', '2016-08-15 23:27:07');

SELECT MONTHNAME(created_at) MONTH,
(SELECT COUNT(mobile_uuid)  FROM VISITORS V2 
WHERE MID(mobile_uuid,1,3)='ios' 
AND MONTHNAME(V2.created_at)=MONTHNAME(V1.created_at)) AS IOS,
(SELECT COUNT(mobile_uuid)  from VISITORS v3 
WHERE MID(mobile_uuid,1,3)='adr' 
AND MONTHNAME(V3.created_at)=MONTHNAME(V1.created_at)) AS ANDROID
FROM VISITORS V1 GROUP BY MONTHNAME(created_at) ORDER BY created_at

查询对我有用

enter image description here

关于mysql - 生成一个按月显示 Android 和 iOs 访问者的表格?数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39476149/

相关文章:

mysql - 在我的 INNER JOIN 中使用 OR 子句

mysql - 用 HAVING 查询,你能解释一下这个行为吗?

mysql - 性能调优--Mysql

sql - 将Google Analytics(分析)与外部数据结合

mysql - 从表中删除

mysql - 哪个数据库可以用来存储NLP引擎处理过的数据

php - 如何将 MySQL 数据库自动复制到同一服务器上的另一个 MySQL 数据库?

java - JDBC 连接超时

java - JPA查询相当于mysql查询

java - Sql 抛出 org.springframework.jdbc.BadSqlGrammarException(PreparedStatementCallback; 错误的 SQL 语法