发表于: 2018-05-20 22:54:37
1 1247
今天完成的事情:
1.今天重点学习了一下mysql的内容《mysql必知必会》。
常用函数:
eg:
AVG(col) 返回指定列的平均值
COUNT(col) 返回指定列中非NULL值/行的个数(当函数参数为星号*时不会忽略)
MIN(col) 返回指定列的最小值
MAX(col) 返回指定列的最大值
SUM(col) 返回指定列的所有值之和
大概了解了几个,之前只用过count(*)
2.group by分组统计
id | user_id | grade | class |
---|---|---|---|
1 | 10221 | A | a |
2 | 10222 | A | a |
3 | 10223 | A | b |
4 | 10224 | A | b |
5 | 10225 | B | a |
6 | 10226 | B | a |
7 | 10227 | B | b |
8 | 10228 | B | b |
9 | 10229 | C | a |
10 | 10230 | C | b |
- 聚合函数max
select max(user_id),grade from user_info group by grade ;
- 1
结果
max(user_id) | grade |
---|---|
10224 | A |
10228 | B |
10230 | C |
将数据按照grade字段分组,查询每组最大的user_id以及当前组内容。
- having
select max(user_id),grade from user_info group by grade having grade>'A'
- 1
结果
max(user_id) | grade |
---|---|
10228 | B |
10230 | C |
having过滤条件,将grade不满足’>A’的过滤掉了。
3.关于每日注册人数统计的demo
public static void main(String[] args) {
List<String> times = new ArrayList<>();
times.add(day(1526572800000L)); //2018//05//18
times.add(day(1526572800000L)); //2018//05//18
times.add(day(1526572800000L)); //2018//05//18
times.add(day(1526486400000L));//2018//05//17
times.add(day(1526400000000L));//2018//05//16
Map<String, Integer> dayRegist = new HashMap<>();
for (String i : times) {
System.out.println(i);
if (!dayRegist.containsKey(i)) {
dayRegist.put(i, 1);
}else {
Integer n = dayRegist.get(i);
dayRegist.put(i, n + 1);
}
System.out.println(dayRegist.toString());
private static String day(Long time) {
DateTime today = new DateTime(time);
return today.toString("yyyy-MM-dd");
}
list是模拟数据中 create_at字段的查询结果 select create_at from user
返回给前端的结果如下:
{2018-05-17=1, 2018-05-18=3, 2018-05-16=1}
遇到的问题:
无
收获:
1.学习了很多新的数据语句。
明天的计划:
1.再看看数据库的内容。
评论