select函数

SQL中Case的使用方法

青春壹個敷衍的年華 提交于 2019-12-29 17:28:18
Case具有两种格式。简单Case函数和Case搜索函数。 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END 这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。 还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。 --比如说,下面这段SQL,你永远无法得到“第二类”这个结果 CASE WHEN col_1 IN ( 'a', 'b') THEN '第一类' WHEN col_1 IN ('a') THEN '第二类' ELSE'其他' END 下面我们来看一下,使用Case函数都能做些什么事情。 一,已知数据按照另外一种方式进行分组,分析。 有如下数据:(为了看得更清楚,我并没有使用国家代码,而是直接用国家名作为Primary Key) 国家(country) 人口(population) 中国 600 美国 100 加拿大 100 英国 200 法国 300 日本 250 德国 200 墨西哥 50 印度 250

SQL中Case的使用

放肆的年华 提交于 2019-12-29 17:27:53
Case具有两种格式。简单Case函数和Case搜索函数。 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END 这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。 还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。 --比如说,下面这段SQL,你永远无法得到“第二类”这个结果 CASE WHEN col_1 IN ( 'a', 'b') THEN '第一类' WHEN col_1 IN ('a') THEN '第二类' ELSE'其他' END 下面我们来看一下,使用Case函数都能做些什么事情。 一,已知数据按照另外一种方式进行分组,分析。 有如下数据:(为了看得更清楚,我并没有使用国家代码,而是直接用国家名作为Primary Key) 国家(country) 人口(population) 中国 600 美国 100 加拿大 100 英国 200 法国 300 日本 250 德国 200 墨西哥 50 印度 250

登录作业——使用装饰器

半世苍凉 提交于 2019-12-29 02:21:56
#_*_coding:utf-8_*_#作者:王佃元#日期:2019/12/25'''需求1.使用文件保存用户名及密码2.程序启动后可以看到三个页面3.用户选择任一界面可进入,如果没有登录,提示用户输入1:京东 home page 只能使用京东的登录2:金融 finance page 只能使用微信登录3:书籍 book page 两种皆可以不同的登录页面调用同一个登录方法打印登录页面用户选择要登录的页面,如果是1则调用'home page'、如果是2则调用'finance page'(循环打印pages列表,获取用户输入,根据用户输入调用方法)登录之后进行页面切换无需再次登录(页面切换首先进行是否登录验证,如果已登录,则显示切换页面,否则提示登录)装饰器:1.为什么装饰器要传函数进来,因为装饰器是对函数功能的扩展,所以要传函数进来并执行2.为什么要返回装饰器内嵌函数,因为不返回内嵌函数无法进行内嵌函数的执行'''# print('welcome to jingdong!')pages = ['home page', 'finance page', 'book page']login_status = Falsedef login_decorator(login): def login_page(*args): global login_status for page in

MySQL存储过程的创建及调用

≯℡__Kan透↙ 提交于 2019-12-28 19:55:24
阅读目录: MySQL存储过程_创建-调用-参数 存储过程:SQL中的“脚本”     1. 创建存储过程     2. 调用存储过程     3. 存储过程体     4. 语句块标签 存储过程的参数     1. in :向过程里传参     2. out :过程向外传参值     3. inout :in and out # SQL语句:先编译后执行 存储过程(Stored Procedure):   一组可编程的函数,是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。 优点 ( 为什么要用存储过程? ):   ①将重复性很高的一些操作,封装到一个存储过程中,简化了对这些SQL的调用   ②批量处理:SQL+循环,减少流量,也就是 “跑批”   ③ 统一接口 ,确保数据的安全 相对于oracle数据库来说,MySQL的存储过程相对功能较弱,使用较少。 一、存储过程的创建和调用   >存储过程就是具有名字的一段代码,用来完成一个特定的功能。   >创建的存储过程保存在数据库的数据字典中。 1、创建存储过程 CREATE [DEFINER = { user | CURRENT_USER }]  PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic

Hive_基于Hive的网站日志分析

馋奶兔 提交于 2019-12-28 07:47:43
文章目录 概述 1. 引出需要进行数据预处理的必要性[→](#toc) 2. 使用RegexSerDe处理apache或者ngnix日志文件[→](#toc) 3. 根据不同业务拆表[→](#toc) 3.1 需求分析 3.2 拆表 4. 数据清洗[→](#toc) 4.1 Hive自定义函数的方式 4.2 UDF去除数据双引号 4.3 UDF转换日期时间格式 5. 编写hql分许数据[→](#toc) 5.1 分析用户访问网站的时间段 5.2 分析用户的ip地址 总结 概述 本文将基于Hive数据仓库工具对一份网站日志进行数据分析,包括分析IP地址。包括在插入数据时使用正则表达式对日志文件进行预处理、利用UDF进行数据清洗、使用ORC格式存储和SNAPPY压缩等。 1. 引出需要进行数据预处理的必要性 → 原日志文件的字段信息统计如下,总共11个字段: 日志文件中信息展示: "27.38.5.159" "-" "31/Aug/2015:00:04:37 +0800" "GET /course/view.php?id=27 HTTP/1.1" "303" "440" - "http://www.ibeifeng.com/user.php?act=mycourse" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36

MySQL存储过程简介

随声附和 提交于 2019-12-27 19:20:56
一、存储过程 存储过程是在大型数据库系统中一组为了完成特定功能的SQL语句集,存储在数据库中。存储过程经过第一次编译后,再次调用不需要编译,用户可以通过指定的存储过程名和给出一些存储过程定义的参数来使用它。存储过程就是为以后使用而保存的一条或多条SQL语句,个人理解跟函数类似,一般用的较少。 好处: 通过把处理封装在一个易用的单元中,可以简化复杂的操作。 2.不需要反复建立一系列的处理步骤,因而保证了数据的一致性。 3.简化了对变动的管理,这一点的延伸就是安全性。 4.存储过程通常以编译过的形式存储,所以DBMS处理命令所需的工作量少,提高了性能。 缺点: 1.可移植性差 2.对于简单的SQL语句,存储过程没什么优势 4.如果只有一个用户使用数据库,那么存储过程对安全也没什么影响 5.团队开发时需要先统一标准,否则后期维护成本大 6.在大并发量访问的情况下,不宜写过多涉及运算的存储过程 7.业务逻辑复杂时,特别是涉及到对很大的表进行操作的时候,不如在前端先简化业务逻辑 二、存储过程语法格式 一般形式 create procedure [过程名]([in|out|inout] [参数名] [参数类型],...) begin [SQL语句集;] end 在定义参数部分时in表示传入参数,读取外部变量值赋给内部参数,但内部参数的作用域仅限存储过程;out表示传出参数

视图&事务&存储过程&流程控制

我只是一个虾纸丫 提交于 2019-12-27 16:37:51
视图 1.什么是视图? 视图就是通过查询得到的一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要用视图? 如果要频繁使用一张虚拟表,可以不用重复查询 3.如何使用视图? create view 视图名 as select * from 表 inner join 表 on 条件; 强调 1.在硬盘中,视图只有表结构文件,没有表数据文件 2.视图一般只适用于查询,不推荐修改视图的数据,如果修改的话会将原数据进行修改。 修改视图:当组成视图的基本表发生变化后可以通过修改视图来保持于基本表的一致性CREATE OR replace VIEW 视图名 AS SELECT * FROM 基本表;删除视图drop view 视图名; 为什么开发过程中不会使用视图 视图是mysql的功能,如果项目中使用大量的视图,在你想要扩充功能的时候如果这个视图需要对视图修改的话,就需要先将mysql这边的视图修改后去应用程序中修改对应的sql语句,这样的话需要跨部门沟通,所以通常不会使用视图,而是通过修改sql语句进行扩展功能。 触发器 是一种保证数据完整性的方法。由事件来触发并非由程序调用和手动启动。 为什么使用触发器? 触发器是针对于对于某张表数据增insert,改update,删delete的行为,这类操作行为一旦执行就会触发触发器的执行,即自动执行另一端sql代码 创建触发器语法 #针对插入

存储过程与函数

僤鯓⒐⒋嵵緔 提交于 2019-12-27 13:59:05
存储过程与函数 1. 存储过程的定义 2. 存储过程的创建 3. 存储过程的操作 3.1 存储过程的调用 3.2 存储过程的查看 3.2.1 SHOW PROCEDURE STATUS查看存储过程的状态 3.2.2 SHOW CREATE PROCEDURE 查看存储过程的信息 3.2.3 INFORMATION_SCHEMA.ROUTINES查看存储过程的信息 3.3 存储过程的删除 4. 自定义函数 4.1 自定义函数的创建 4.2 自定义函数的调用 4.3 变量 4.3.1 定义变量 4.3.2 变量赋值 4.3.2.1 变量赋值(1) 4.3.2.2 变量赋值(2) 4.4 流程控制语句 4.4.1 if语句 4.4.2 CASE语句 4.4.3 LOOP语句 4.4.4 LEAVE语句 4.4.5 ITERATE语句 4.4.6 REPEAT语句 4.4.7 WHILE语句 4.5 光标的使用 4.5.1 声明光标 4.5.2 打开光标 4.5.3 使用光标 4.5.4 关闭光标 4.6 定义条件和处理程序 4.6.1 定义条件 4.6.2 定义处理程序 1. 存储过程的定义 存储过程是一组完成特定功能的SQL语句集合 将常用或复杂的工作,预先用SQL语句写好并用一个指定名称存储起来,这个过程经编译和优化后存储在数据库服务器中, 因此称为存储过程 2. 存储过程的创建

MySQL字符串函数:字符串截取

寵の児 提交于 2019-12-27 10:13:12
MySQL 字符串截取函数:left(), right(), substring(), substring_index()。还有 mid(), substr()。其中,mid(), substr() 等价于 substring() 函数,substring() 的功能非常强大和灵活。 1. 字符串截取:left(str, length) mysql> select left('sqlstudy.com', 3); +-------------------------+ | left('sqlstudy.com', 3) | +-------------------------+ | sql | +-------------------------+ 2. 字符串截取:right(str, length) mysql> select right('sqlstudy.com', 3); +--------------------------+ | right('sqlstudy.com', 3) | +--------------------------+ | com | +--------------------------+ 3. 字符串截取:substring(str, pos); substring(str, pos, len) 3.1 从字符串的第 4 个字符位置开始取

MySQL4:存储过程和函数

你。 提交于 2019-12-27 05:11:40
什么是存储过程 简单说,存储过程就是一条或多条SQL语句的集合,可视为批文件,但是起作用不仅限于批处理。本文主要讲解如何创建存储过程和存储函数以及变量的使用,如何调用、查看、修改、删除存储过程和存储函数等。使用的数据库和表还是之前写JDBC用的数据库和表: create database school; use school; create table student ( studentId int primary key auto_increment not null, studentName varchar(10) not null, studentAge int, studentPhone varchar(15) ) insert into student values(null,'Betty', '20', '00000000'); insert into student values(null,'Jerry', '18', '11111111'); insert into student values(null,'Betty', '21', '22222222'); insert into student values(null,'Steve', '27', '33333333'); insert into student values(null,'James', '22