怎么样在数据库中使用命令统计我想要的数据
1、数据库统计,总是有很多类似的场景。
比如有了许多数据了,要统计今天访问网站有多少人,诸如此类。
来先看下示例的数据源

2、后面的操作都是根据这个数据源操作的哦。
先来看看怎么统计今天都有哪些事件发生了。
SELECT name,count(1) as num,url FROM log_event GROUP BY `name`;

3、但是我们的运营老是不满足这些简单的数据统计,他们还想知道,6点前和六点后的数据分别是哪些数据。
当然,如果分多次查询,也是可以得到结果的。
但不是我们想要的呀,比如
SELECT name,count(1) as num,url FROM log_event WHERE create_time >= '2018-02-06 18:00:00' GROUP BY `name`;
和
SELECT name,count(1) as num,url FROM log_event WHERE create_time < '2018-02-06 18:00:00' GROUP BY `name`;


4、前面的操作是符合要求的,但是如果分一百个时段,我就要做一百相同的查询?
怎么想都不科学呀。

5、上下求索之后还是有方案的。
突然变的,这么长一串代码,怎么看都不太科学啊。
在优化下吧。

6、功夫不负有心人,办法总是有的,变通下。
SELECT `name`,
sum(CASE WHEN (
create_time >= '2018-02-06 17:00:00'
AND create_time < '2018-02-06 18:00:00'
) THEN 1 ELSE 0 END
) AS '17',
sum(
CASE WHEN (
create_time >= '2018-02-06 18:00:00'
AND create_time < '2018-02-06 19:00:00'
) THEN 1 ELSE 0
END
) AS '18',
url
FROM
log_event
GROUP BY
`name`;

7、结果出来了,时间段,名称,统计时间,数据都有了。完美