linux


linux模板机:
    1. ip 动态ip =》静态ip 
            1.内网
            2.学习方便 
    2.关闭防火墙 :
         1-65535
         关闭防火墙
    3.额外的安装包 :
        1.jdk =》 卸载掉 
        2.mysql =》 mysql自带的额外包【安装mysql 去掉就行】 【superset mysql自带的额外包】 


ip:
    1.win =》 vmware :
        1.子网ip  1-255
            192.168.10.0 
        2.网关 
            192.168.10.2
        
    2.linux => 静态ip 
        IPADDR=192.168.10.10
        GATEWAY=192.168.10.2
        DNS1=192.168.10.2

        [root@sygy10 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
        BOOTPROTO="static"
        ONBOOT="yes"
        IPADDR=192.168.10.10
        GATEWAY=192.168.10.2
        DNS1=192.168.10.2
        
        【重启网络或者 重启机器】
            service network restart 

关闭防火墙:
    systemctl stop firewalld
    systemctl disable firewalld

额外的安装包 :
        1.jdk =》 卸载掉 
        rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps

linux =》 centos :
    1.安装软件:    
        1.yum 
        2.rpm 
        3.tar 

rpm :
    卸载:
        1.查询 java 
        rpm -qa | grep -i java

        2.卸载
        rpm -e --nodeps xxx 

克隆之后:
    1.机器的名字
        vim /etc/hostname
    2.机器的ip 
        10 -》 03
        vim /etc/sysconfig/network-scripts/ifcfg-ens33
            改ip 跟机器号对应上 


规范:
[hadoop@sygy03 ~]$ mkdir app project software shell data log

MySQL:
    1.版本:
        5.6 【少】
        5.7  【多】
        8.x    【】 
    
    2.部署平台:
        win =》 
        mac =》 
        linux =》 
            1.两种方式 
                1.rpm包 =》 部署简单  【学习使用】
                2.tar包 =》 部署复杂 【生产上用】

安装mysql: 
    1.卸载 mysql 相关的包 
    [root@sygy03 software]# rpm -qa|grep mariadb
    mariadb-libs-5.5.56-2.el7.x86_64
    [root@sygy03 software]# rpm -e --nodeps  mariadb-libs
    [root@sygy03 software]# rpm -qa|grep mariadb

    2.安装mysql 
        1.解压
    [root@sygy03 software]# tar -xvf ./mysql-8.0.21-1.el7.x86_64.rpm-bundle.tar -C ./mysql
        2.安装
        rpm :
        rpm -ivh mysql-community-common-8.0.21-1.el7.x86_64.rpm 
        rpm -ivh mysql-community-libs-8.0.21-1.el7.x86_64.rpm
        rpm -ivh mysql-community-libs-compat-8.0.21-1.el7.x86_64.rpm
        rpm -ivh mysql-community-client-8.0.21-1.el7.x86_64.rpm
        rpm -ivh mysql-community-server-8.0.21-1.el7.x86_64.rpm

        3.启动
            1.查看配置mysql
            vim /etc/my.cnf 

                日志文件:/var/log/mysqld.log
            2.mysql 初始化 
            mysqld --initialize --user=mysql

            临时密码:
                root@localhost: (mdeIsSmq3s6

                root
                (mdeIsSmq3s6

            3.启动mysql 
            systemctl start mysqld

            4.登录mysql 
            [root@sygy03 mysql]# mysql -uroot -p\(mdeIsSmq3s6

            5.修改密码 
            alter user root@localhost identified by '123456';

            6.修改任何 ip 都可以访问 mysql 
            update mysql.user set host='%' where user='root';

            7.刷新权限
            flush privileges;


mysql 远程连接工具:
    1.dbvear =》 hive phoniex clickhouse 
    2.netcat 
    3. db 


mysql 语法:

1.聚合函数(分组函数)

group By =》 分组 
聚合函数  =》 指标统计 sum avg max min  count 

需求: 
    统计 每个部门有多少个人 ?
c查什么:
    维度 : 部门
    指标 : 人数

聚合统计逻辑: 

    聚合统计:
        group by  +聚合函数 
    group by =》 分组 
    20,<20,20,20>
    30,<30,30,30,30>
    10,<10,10,10,10>

    聚合函数  =》 指标 count  
    20,3
    30,4


2.开窗函数 
    1.聚合函数 : 多行数据 按照一定规则 进行聚合 为一行
        sum avg max 。。。 
        理论上: 聚合后的行数 <= 聚合前的行数 [看维度选取 groupby 里面的字段]

    2.需求: 
        既要显示 聚合前的数据 又要显示 聚合后的数据 ?

    eg:    
    id name  sal      dt          sal_all    
    1  zs    1000     2022-4        1000
    2  ls    2000     2022-4        2000
    3  ww    3000     2022-4        3000
    1  zs    1000     2022-5        2000
    2  ls    2000     2022-5        4000
    3  ww    3000     2022-5        6000

窗口函数: 
    窗口 + 函数 
    窗口: 函数运行时 计算的数据集的范围
    函数:运行时的函数
        1.聚合函数
        2.内置窗口函数

    语法结构:
        函数 over([partition by xxx,...]  [order by xxx,...] )

        over() :以谁进行开窗 【table】
        partition by: 以谁进行分组 【group by  column】
        order by: 以谁进行排序 【column】


窗口函数:

数据:
    服务器 每天的启动 次数 

    linux01,2022-04-15,1
    linux01,2022-04-16,5
    linux01,2022-04-17,7
    linux01,2022-04-18,2
    linux01,2022-04-19,3
    linux01,2022-04-20,10
    linux01,2022-04-21,4

统计累计问题:
    需求: 
        每个服务器每天的累计 启动次数 
name      dt       cnt  
linux01,2022-04-15,1
linux01,2022-04-16,5
linux01,2022-04-17,7
linux01,2022-04-18,2
linux01,2022-04-19,3
linux01,2022-04-20,10
linux01,2022-04-21,4

name      dt       cnt      cnt_all
linux01,2022-04-15,1        1
linux01,2022-04-16,5        6
linux01,2022-04-17,7        13
linux01,2022-04-18,2        15
linux01,2022-04-19,3        18
linux01,2022-04-20,10        28
linux01,2022-04-21,4        32

create table window01(
    name varchar(50),
    dt varchar(20),
    cnt int
);

每个服务器每天的累计 启动次数  

1.聚合函数  
    COUNT,SUM,MIN,MAX,AVG
select 
name,
dt,
cnt,
sum(cnt) over(partition by name  order by dt ) as cnt_all
from window01;

2.内置窗口函数 


窗口大小:
    select 
name,
dt,
cnt,
sum(cnt) over(partition by name  order by dt ) as sum_all,
-- sum(cnt) over(partition by name  order by dt ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW  ) as sum_all1
-- sum(cnt) over(partition by name  order by dt ROWS BETWEEN 3 PRECEDING AND CURRENT ROW ) as sum_all2
-- sum(cnt) over(partition by name  order by dt ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING ) as sum_all3
-- sum(cnt) over(partition by name  order by dt ROWS BETWEEN 3 PRECEDING AND UNBOUNDED FOLLOWING) as sum_all4
sum(cnt) over(partition by name  order by dt ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) as sum_all5

from window01;


2.内置窗口函数
    1.取值 串行 

    2.排序 
    RANK
    ROW_NUMBER
    DENSE_RANK
    CUME_DIST
    PERCENT_RANK
    NTILE

NTILE:

ntile  
    需求:
        把数据按照某个字段进行排序 ,把数据分成几分  

select 
name,
dt,
cnt,
sum(cnt) over(partition by name  order by dt ) as sum_all,
ntile(2) over(partition by name  order by dt ) as n2,
ntile(3) over(partition by name  order by dt ) as n3
from window01 ;
    把数据平均分配 指定 N个桶 ,如果不能平均分配 ,优先分配到 编号 小的里面


RANK
ROW_NUMBER
DENSE_RANK


RANK:  从1 开始 , 按照顺序 相同会重复 名次会留下 空的位置 生成组内的记录编号
ROW_NUMBER: 从1 开始 , 按照顺序 生成组内的记录编号
DENSE_RANK:从1 开始 , 按照顺序 生成组内的记录编号 相同会重复 名次不会会留下空的位置

select 
name,
dt,
cnt,
sum(cnt) over(partition by name  order by dt ) as sum_all,
RANK() over(partition by name  order by cnt desc ) as rk,
ROW_NUMBER() over(partition by name  order by cnt desc) as rw,
DENSE_RANK() over(partition by name  order by cnt desc ) as d_rk
from window01 ;

    1. 串行
        LEAD
        LAG

        1. 串行
        LEAD:窗口内 向下 第n行的值
        LAG:窗口内 向上 第n行的值
            LEAD(column,n,default)
            column => 列名 
            n =》 取 几行 
            default =》 取不到就给一个默认值

            select 
            name,
            dt,
            cnt,
            sum(cnt) over(partition by name  order by dt ) as sum_all,
            LEAD(dt,1,"9999-99-99")  over(partition by name  order by dt ) as lead_alias,
            LAG(dt,1,"9999-99-99")  over(partition by name  order by dt ) as lag_alias
            from window01 ;

    2.取值
    FIRST_VALUE
    LAST_VALUE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值