发表于: 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分组统计


iduser_idgradeclass
110221Aa
210222Aa
310223Ab
410224Ab
510225Ba
610226Ba
710227Bb
810228Bb
910229Ca
1010230Cb
  • 聚合函数max
select max(user_id),grade from user_info group by grade ;
  • 1

结果

max(user_id)grade
10224A
10228B
10230C

将数据按照grade字段分组,查询每组最大的user_id以及当前组内容。

  • having
select max(user_id),grade from user_info group by grade  having grade>'A'
  • 1

结果

max(user_id)grade
10228B
10230C

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.再看看数据库的内容。





返回列表 返回列表
评论

    分享到