HiSEN

Personal Technology Blog


  • 归档

  • 分类

  • 标签

  • 书单

  • 关于

  • 搜索
close
HiSEN

MySQL一个group by查询出最大值和非group by所在字段的值

发表于 2017-04-18 | 分类于 mysql

表结构,数据内容如下。

需求是:查找出每个年级,年纪最大的人的名字。

个人的思维只停留在

1
2
3
4
5
6
7
8
9
10
11
mysql> select name, max(age),grade from  stu group by grade;
ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'hisen.stu.name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

mysql> SELECT A.* FROM stu A INNER JOIN (SELECT MAX(AGE) AS MAX_AGE,GRADE FROM stu GROUP BY GRADE ) B ON A.GRADE = B.GRADE AND A.AGE= B.MAX_AGE;
+----+------+------+-------+
| id | name | age | grade |
+----+------+------+-------+
| 3 | c | 13 | 1 |
| 6 | f | 13 | 2 |
+----+------+------+-------+
2 rows in set (0.00 sec)

折腾了一会自己不知道怎么解决,后来倒是解决了。

具体过程如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
mysql> describe stu;
+-------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | char(1) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| grade | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

mysql> select * from stu;
+----+------+------+-------+
| id | name | age | grade |
+----+------+------+-------+
| 1 | a | 11 | 1 |
| 2 | b | 12 | 1 |
| 3 | c | 13 | 1 |
| 4 | d | 11 | 2 |
| 5 | e | 12 | 2 |
| 6 | f | 13 | 2 |
+----+------+------+-------+
6 rows in set (0.00 sec)

mysql> select max(name), max(age),grade from stu group by grade;
+-----------+----------+-------+
| max(name) | max(age) | grade |
+-----------+----------+-------+
| c | 13 | 1 |
| f | 13 | 2 |
+-----------+----------+-------+
2 rows in set (0.01 sec)

HiSEN

Docker一键安装脚本Ubuntu-Debian-CentOS-Fedora-racleLinux

发表于 2017-04-17 | 分类于 linux

系统要求
Ubuntu 14.04、16.04

Debian 7.7、8.0

CentOS 7.X

Fedora 20、21、22

OracleLinux 6、7

安装方法:

1
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -

详情:http://mirrors.aliyun.com/help/docker-engine

HiSEN

ubuntu安装docker-ce并配置国内源和加速器

发表于 2017-04-17 | 分类于 linux

一、配置ubuntu国内镜像,这里推荐阿里云,右上角搜索:换阿里云源

二、安装docker

1
2
3
4
sudo apt-get update
sudo apt-get install \
linux-image-extra-$(uname -r) \
linux-image-extra-virtual

安装docker包

1
2
3
4
5
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common

添加docker官方GPG秘钥,留意最后那个符号也要复制

1
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

安装稳定版仓库

阅读全文 »

HiSEN

html - 原生javascript动态显示当前时间和日期

发表于 2017-04-12

显示当前时间:

2017年04月12日 18:26:37 星期三

示例如下:

阅读全文 »

HiSEN

Maven镜像库设置 - maven mirrors - maven 镜像 阿里

发表于 2017-04-12 | 分类于 maven

配置文件:

1
yourPath\maven-3.3.9\conf\settings.xml

找到里面的,添加镜像即可

1
2
<mirrors>
</mirrors>

这里写的是被镜像的ID

如果写成:* (星号)

所有的请求都会到这个镜像上,包括各种本地库

注意:千万不要配成*

否则内网的仓库或者你配的镜像里面没有一下jar包的时候不会去别的地方搜索

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!--阿里云:速度挺快-->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

<!--谷歌:北京速度不错-->
<mirror>
<id>google-maven-central</id>
<name>Google Maven Central</name>
<url>https://maven-central.storage.googleapis.com</url>
<mirrorOf>central</mirrorOf>
</mirror>

HiSEN

Oracle 分页的三种方式

发表于 2017-04-11 | 分类于 database

第一种:

1
2
3
4
5
select *
from (select t.*, rownum rn
from (select * from EW_AUTH_FLOW) t
where rownum <= 5)
where rn > 2;

第二种:

1
2
3
select *
from (select t.*, rownum rn from ew_auth_flow t where rownum <= 5)
where rn > 2;

第三种:

1
2
3
select *
from (select t.*, rownum rn from ew_auth_flow t)
where rn between 2 and 5;

HiSEN

Jedis - Software caused connection abort:recv failed

发表于 2017-04-11 | 分类于 java

在使用jedis的时候出现这个问题:

redis.clients.jedis.exceptions.JedisConnectionException:java.net.SocketException:Software caused connection abort: recv failed

我是windows上java运行,然后redis是在虚拟机的,通过映射访问

解决办法:

编辑redis配置文件:

1
sudo vi /etc/redis/redis.conf

找到

1
bind 127.0.0.1

改成

1
bind 0.0.0.0

改完之后重启redis

1
service redis restart

即可。这跟mysql一样,允许任何ip连接!

HiSEN

Mysql Employees Database练习题&答案

发表于 2017-04-10 | 分类于 sql

Employees数据库是mysql官方提供的一个测试用数据库

里面含有几十万条数据。

找了好久也没有找到比较匹配的题目

就找了个匹配度比较高的题来练习,如果你还没有导入Employees Sample Database

请参考:点击导入Employees

本次操作在Xshell中完成,也就是mysql命令行。

简单的操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#登陆数据库
hisen@ubuntu:/$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.7.17-0ubuntu0.16.04.2 (Ubuntu)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| employees |
| log4j |
| mysql |
| performance_schema |
| ssm |
| sys |
+--------------------+
7 rows in set (0.00 sec)

mysql> use employees
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------------+
| Tables_in_employees |
+----------------------+
| current_dept_emp |
| departments |
| dept_emp |
| dept_emp_latest_date |
| dept_manager |
| employees |
| salaries |
| titles |
+----------------------+
8 rows in set (0.00 sec)

mysql> select * from employees limit 10;
+--------+------------+------------+-----------+--------+------------+
| emp_no | birth_date | first_name | last_name | gender | hire_date |
+--------+------------+------------+-----------+--------+------------+
| 10001 | 1953-09-02 | Georgi | Facello | M | 1986-06-26 |
| 10002 | 1964-06-02 | Bezalel | Simmel | F | 1985-11-21 |
| 10003 | 1959-12-03 | Parto | Bamford | M | 1986-08-28 |
| 10004 | 1954-05-01 | Chirstian | Koblick | M | 1986-12-01 |
| 10005 | 1955-01-21 | Kyoichi | Maliniak | M | 1989-09-12 |
| 10006 | 1953-04-20 | Anneke | Preusig | F | 1989-06-02 |
| 10007 | 1957-05-23 | Tzvetan | Zielinski | F | 1989-02-10 |
| 10008 | 1958-02-19 | Saniya | Kalloufi | M | 1994-09-15 |
| 10009 | 1952-04-19 | Sumant | Peac | F | 1985-02-18 |
| 10010 | 1963-06-01 | Duangkaew | Piveteau | F | 1989-08-24 |
+--------+------------+------------+-----------+--------+------------+
10 rows in set (0.00 sec)
#统计各部门曾经拥有的员工数量
mysql> select dept_no,count(*) emp_sum
-> from dept_emp
-> group by dept_no
-> order by emp_sum desc;
+---------+---------+
| dept_no | emp_sum |
+---------+---------+
| d005 | 85707 |
| d004 | 73485 |
| d007 | 52245 |
| d009 | 23580 |
| d008 | 21126 |
| d001 | 20211 |
| d006 | 20117 |
| d003 | 17786 |
| d002 | 17346 |
+---------+---------+
9 rows in set (0.63 sec)
#创建视图
mysql> CREATE VIEW test AS
-> SELECT dept_no, COUNT(*) AS emp_sum
-> FROM dept_emp
-> GROUP BY dept_no
-> ORDER BY emp_sum DESC
-> ;
Query OK, 0 rows affected (0.16 sec)
mysql> select * from test;
+---------+---------+
| dept_no | emp_sum |
+---------+---------+
| d005 | 85707 |
| d004 | 73485 |
| d007 | 52245 |
| d009 | 23580 |
| d008 | 21126 |
| d001 | 20211 |
| d006 | 20117 |
| d003 | 17786 |
| d002 | 17346 |
+---------+---------+
9 rows in set (0.11 sec)
#联合查询,加上部门名称
mysql> select test.dept_no,emp_sum,dept_name
-> from test,departments
-> where test.dept_no = departments.dept_no;
+---------+---------+--------------------+
| dept_no | emp_sum | dept_name |
+---------+---------+--------------------+
| d009 | 23580 | Customer Service |
| d005 | 85707 | Development |
| d002 | 17346 | Finance |
| d003 | 17786 | Human Resources |
| d001 | 20211 | Marketing |
| d004 | 73485 | Production |
| d006 | 20117 | Quality Management |
| d008 | 21126 | Research |
| d007 | 52245 | Sales |
+---------+---------+--------------------+
9 rows in set (0.16 sec)

练习题目和答案:

建议看看输出的结果自己写下sql,不要单纯的复制粘贴。

因为数据量比较大, 很多时候我都加了5条数据的限制。

阅读全文 »

HiSEN

Linux查看日志文件常用命令

发表于 2017-04-07 | 分类于 linux

linux查看日志文件内容命令tail、cat、tac、head、echo

tail -f test.log

你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C,

cat -n hisen.log | grep ‘907’

在文件当中查找指定的内容,这里是查询:907


linux 如何显示一个文件的某几行(中间几行)

从第3000行开始,显示1000行。即显示3000~3999行

1
cat filename | tail -n +3000 | head -n 1000

显示1000行到3000行

1
cat filename| head -n 3000 | tail -n +1000

*注意两种方法的顺序
分解:

  1. tail -n 1000:显示最后1000行
  2. tail -n +1000:从1000行开始显示,显示1000行以后的
  3. head -n 1000:显示前面1000行

用sed命令
sed -n ‘5,10p’ filename 这样你就可以只查看文件的第5行到第10行。

例:cat mylog.log | tail -n 1000 #输出mylog.log 文件最后一千行


cat主要有三大功能:

1.一次显示整个文件。$ cat filename

2.从键盘创建一个文件。$ cat > filename

只能创建新文件,不能编辑已有文件.

3.将几个文件合并为一个文件: $cat file1 file2 > file

参数:

-n 或 –number 由 1 开始对所有输出的行数编号

-b 或 –number-nonblank 和 -n 相似,只不过对于空白行不编号

-s 或 –squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行

-v 或 –show-nonprinting

例:

把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里

1
cat -n textfile1 > textfile2

把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。

1
cat -b textfile1 textfile2 >> textfile3

把test.txt文件扔进垃圾箱,赋空值test.txt

1
cat /dev/null > /etc/test.txt

注意:>意思是创建,>>是追加。千万不要弄混了。


tac (反向列示)

tac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,

而 tac 则是由最后一行到第一行反向在萤幕上显示出来!


在Linux中echo命令用来在标准输出上显示一段字符,比如:
echo “the echo command test!”

这个就会输出“the echo command test!”这一行文字!

echo “the echo command test!”>a.sh

这个就会在a.sh文件中输出“the echo command test!”这一行文字!

该命令的一般格式为: echo [ -n ] 字符串其中选项n表示输出文字后不换行;字符串能加引号,也能不加引号。

用echo命令输出加引号的字符串时,将字符串原样输出;

用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割。

一些实例

阅读全文 »
HiSEN

Hexo next主题添加本地搜索 - 不使用第三方服务

发表于 2017-04-07 | 分类于 hexo

之前安装过第三方的搜索服务,贼蛋疼。都不免费了。

也有自己安装插件,然后写js的,麻烦

后来找到两个插件,安装之后就搞定了

感谢开发的作者!!!

安装插件

记得要在站点根目录执行下面的安装操作

1.安装 hexo-generator-search

1
npm install hexo-generator-searchdb --save

2.安装 hexo-generator-searchdb

1
npm install hexo-generator-searchdb --save

阅读全文 »
1…171819…27
hisenyuan

hisenyuan

Java R & D

266 日志
33 分类
112 标签
GitHub Weibo
Links
  • 科技爱好者周刊
  • 美团技术团队
  • duanple(老师木)
  • 当然我在扯淡(王垠)
  • 段永平的博客
  • 梦殇国际
© 2016 - 2024 hisenyuan
由 Hexo 强力驱动
您是第  个访问者    |   
主题 - NexT.Mist