sql
sql
白小斗
这个作者很懒,什么都没留下…
展开
-
sql数据库的csv导入报错:Columns in table defination are 11, columns in file are 14:sjsysc-hh405-zbhx783w
问题:在sql数据库上传csv数据的时候,一直发生报错如下:解决方法:举例来说,如果你的csv文件是以“,”分割的,那极有可能是因为字段的文本数据中也包含此符号导致的,先对csv文件中所有字段中的“,”进行替换即可。(以“;”分割的csv文件也是一致的)...原创 2022-02-11 15:24:25 · 1432 阅读 · 0 评论 -
oracle数据库之提取时间的方法
提取时间方法一般使用to_char()和to_date()函数来提取时间字段的年、月、日等维度,以及做字符串和时间类型的转换。从指定日期中获取部分数据:示例:提取jsrqsj字段中的日期:select jsrqsj, to_char(jsrqsj,'yyyymm'), --提取月份呢,转化为字符串类型 to_date(to_char(jsrqsj,'yyyymmdd'),'yyyymmdd') --提取日期,转化为时间类型from ir_gxp_200707_原创 2020-07-28 11:55:43 · 2428 阅读 · 0 评论 -
sql中将group by产生的同一分组中的值连接起来,返回一个字符串结果的函数:group_concat()
将group by后同一组的结果调整成一行的展示形式示例原始数据表为:select * from test_1对name字段进行group by拼接select name, group_concat(date), GROUP_CONCAT(salary) from test_1 group by name原创 2020-09-18 08:55:04 · 1373 阅读 · 0 评论 -
sql/oracle数据库之时间函数datediff()、timestampdiff()及示例
时间函数datediff、timestampdiffdatediff(日期1,日期2):返回日期1与日期2相差的天数。(注意:如果日期1比日期2大,结果为正;如果日期1比日期2小,结果为负)timestampdiff(时间类型,日期1,日期2):返回日期1与日期2的差值,根据 “时间类型” 为day、hour、second返回相差的天数、小时数、分钟数等。(注意:与diffdate()函数的正、负号规则刚好相反,日期1大于日期2,结果为负,日期1小于日期2,结果为正。)示例:如下为举例所原创 2020-07-25 15:20:18 · 11442 阅读 · 0 评论 -
sql/oracle数据库之处理空值的函数ifnull(a,b)及示例
处理处理空值函数:ifnull如果a不是空的话返回a值,如果a是空的话返回b值示例:如下为举例所用的数据表test_1的表结构:将数据表中的空值替换为“–”select salary, ifnull(salary,'--')from test_1输出:...原创 2020-07-25 15:00:47 · 3241 阅读 · 1 评论 -
MySQL查询本周、上周、本月、上个月份的数据
/今天/select * from 表名 where to_days(时间字段) = to_days(now());/昨天/select * from 表名 where to_days(now())-to_days(时间字段) = 1;/近7天/select * from 表名 where date_sub(curdate(), interval 7 day) <= date(时间字段);/查询距离当前现在6个月的数据/select * from 表名 where 时间字段 bet转载 2021-12-08 10:16:09 · 635 阅读 · 0 评论 -
sql中timestamp和datetime之间的转换
互相转换说明:将datetime转换为timestamp格式,使用FROM_UNIXTIME()函数;将timestamp转换为datetime格式,使用UNIX_TIMESTAMP()函数;示例如下:1、现在数据库的datetime时间:select UNIX_TIMESTAMP(now()) from dual2、将现在数据库的datetime时间转换为timestamp格式:select UNIX_TIMESTAMP(now()) from dual3、将转换成的time原创 2020-08-26 15:49:09 · 18901 阅读 · 0 评论 -
sql中两个字段进行拼接用concat()函数
多个字段进行拼接:注意:如果有一个字段为空值,那拼接之后的字段为空值。示例:原始数据表为:select * from test_1对“姓名”和“薪水”字段进行拼接:select concat(name,salary) from test_1原创 2020-08-27 09:21:24 · 22834 阅读 · 0 评论 -
Oracle/PLSQL中获取字符串位置的instr()函数
使用方法:instr(string1, string2)从string1中检索string2字符所在的位置;instr(string1, string2, m,n)从m开始第n次在在string1中出现string2字符的位置。示例:原创 2021-11-08 10:01:07 · 3918 阅读 · 0 评论 -
sql中将字符串和时间格式的互相转换:date_format()、str_to_date()
关于日期存储格式的互相转换:日期格式转换为字符串格式化:date_format();字符串格式转换为日期格式:str_to_date()示例:1、由日期格式转换为字符串格式:将日期存储格式的“date”字段转换为字符串存储格式select date, --原始存储为日期格式 date_format(date, '%Y-%m-%d') date_str --日期格式转换为字符串格式from test_1输出:2、由字符串存储格式转换为日期存储格式:将上面生成的结果表中原创 2020-08-27 10:47:48 · 25658 阅读 · 1 评论 -
sql数据库之提取时间函数date()、year()、month()...及示例
提取时间函数提取日期字段中的某一维度时间常用的提取时间函数有:date():提取当前日期year():提取当前年份month():提取当前月份day():提取当前日期hour():提取当前小时minute():提取当前分钟second():提取当前秒示例:如下为举例所用的数据表test_1的表结构:提取当前的日期、年、月、日、小时、分、秒数据:select date(date), year(date), month(date), day(date), hour(date),原创 2020-07-25 15:15:37 · 14511 阅读 · 0 评论 -
sql/oracle数据库之偏移函数lag()、lead()及示例
偏移函数lag、lead一般按要求排名后,向上或者向下取排名第几的数值lag(字段名称 , 向上偏移量 , 超出范围时默认值) over (partion by …order by …)lead(字段名称 , 向下偏移量 , 超出范围时默认值) over (partion by …order by …)示例:如下为举例所用的数据表test_1的表结构:查找每个人按时间顺序排列的下一次薪水是多少,没有的话用0代替:select name, date, salary,lead(sa原创 2020-07-25 15:08:49 · 9664 阅读 · 0 评论 -
sql/oracle数据库之group by常用的聚合函数(sum、count、avg......)及示例
常见的聚合函数常见的聚合函数有:AVG() 返回平均值,空值被忽略VAR ()返回所有值的统计方差VARP ()返回给定表达式中所有值的填充的统计方差COUNT() 返回记录的数量MAX ()返回最大值MIN ()返回最小值SUM ()返回和,只能用于数字列,空值被忽略STDEV() 返回统计标准偏差STDEVP() 返回所有值的填充统计标准偏差MEDIAN()返回中位数(仅用于oracle数据库)示例:如下为举例所用的数据表test_1的表结构:查找数据表中兼职工作结算不原创 2020-07-25 14:52:03 · 2148 阅读 · 0 评论 -
sql/oracle数据库之取整函数round()、ceil()、floor()等等及示例
取整函数SQL中的取整函数主要有一下这些:round(value,precision):按照四舍五入保留precision位精度的数值;注意:在oracle数据库中还有一个函数trunc(value,precision),是说按照截取的方式保留precision位精度的数值;ceil (value) :返回大于或等于指定值的最小整数。floor(value):与 ceil()相反,返回小于或等于指定值(value)的最小整数。sign(value) :与绝对值函数ABS()相反,ABS()给出原创 2020-07-26 23:01:16 · 7448 阅读 · 0 评论 -
sql案例练习
注:参考公众号“猴子数据分析”中的相关教程。题目:"课程订单表”里记录了某在线教育App的用户购买课程的信息(部分数据截图)。请使用sql将购买记录表中的信息,提取为下表(复购分析表)的格式。并用一条sql语句写出。复购用户:如果一个用户的首次购买日期是a,且该用户在a之后的第n月内,也有购买行为,这个用户被算做第n月复购用户。代码:select a.购买时间, count(distinct 用户id),count(distinct case when timestampdiff(mont转载 2020-08-21 16:44:38 · 503 阅读 · 0 评论 -
python配置SSH通道连接远程oracle数据库,并读取数据表为dataframe格式
python连接oracle数据库,并读取数据表为dataframe格式具体代码如下,代码中的中文部分需要自行修改成自己的相关信息。#!/usr/bin/env python#coding:utf-8#导入数据模块import cx_Oracleimport xlsxwriterimport timeimport pandas as pdfrom sshtunnel import SSHTunnelForwarder#远程服务器及其上的数据库相关信息userInfo = '数据库用原创 2021-07-12 16:11:28 · 502 阅读 · 0 评论 -
数据库导出来的配备有ctl文件的数据表入库说明
1、库中建表按ctl文件的格式建表2、修改ctl把ctl的表名改成自己新建的表名称3、把存储数据的csv文件和ctl文件放进同一个文件夹在文件夹目录下的长按shift键,空白处点击右键,选择在此处打开命令窗口4、在命令窗口输入sqlldr hwcd/ABC123 @ora11 control=wfybdb_sqlldr.ctl说明:hwcd(数据库名)、ABC123(数据库密码)、ora11(数据库上面有显示 ,如图:)...原创 2020-11-09 17:09:07 · 791 阅读 · 0 评论 -
sql/oracle数据库之case when... then...else...end及示例
分类/分段的case when主要是根据条件对数据进行分类可以结合聚合函数sum()使用:用于有筛选条件的统计数量的问题示例:如下为举例所用的数据表test_1的表结构:统计test_1表中单次薪水收入大于1000的次数、及其在总记录中的占比:select sum(case when salary >1000 then 1 else 0 end) as 次数,sum(case when salary >1000 then 1 else 0 end)/count(*) as 占原创 2020-07-25 15:39:05 · 490 阅读 · 0 评论 -
sql/oracle数据库之交叉联结cross join...on...及示例
交叉联结使用交叉联结会列出两个表中数据两两组合会出现的全部记录(笛卡尔积式的联结)示例:如下为举例所用的数据表test_1的表结构:将表进行笛卡尔积式的联结,然后选出所有名字为“ban”的记录:select * from test_1 b1 cross join test_1 b2on b1.name='ban'where datediff(b1.date, b2.date)>1输出:...原创 2020-07-25 15:34:18 · 1294 阅读 · 0 评论 -
sql/oracle数据库之limit及示例
limitlimit m:返回前m条语句(可用于按顺序排列之后查找前几名的数据等场景使用)limit n,m:表示跳过n条语句之后,按顺序再返回m条语句(可用于查找排名第二的数据等场景使用)示例:如下为举例所用的数据表test_1的表结构:一、查找单次薪水最高的三个人:select * from test_1 order by salary desclimit 3输出:二、查找按薪水排名第三的人:select * from test_1 order by salary de原创 2020-07-25 15:29:28 · 4685 阅读 · 0 评论 -
sql/oracle数据库之having及示例
having需要跟聚合函数一起使用,对聚合出的结果按照某些条件进行筛选示例:如下为举例所用的数据表test_1的表结构:查找每个人在表格中出现的次数select name, count(*) from test_1 group by name输出:...原创 2020-07-25 15:26:03 · 414 阅读 · 0 评论