设为首页 收藏本站
查看: 1051|回复: 0

[经验分享] 常见mysql sql 技巧一

[复制链接]

尚未签到

发表于 2018-10-22 09:25:36 | 显示全部楼层 |阅读模式
  1,数字辅助表
  //创建表
  create table test(id int unsigned not null primary key);
  delimiter //
  create procedure pnum(cnt int unsigned)
  begin
  declare i int unsigned default 1;
  insert into num  select i;
  while i*2 < cnt do
  insert into num select i+id from num ;
  set i=i*2;
  end while;
  end
  //
  delimiter ;
  #####列值不连续问题:
  表a中id值为1,2,3,100,101,110,111
  set @q=0;

  select>  #####对不连续的进行分组
  set @a=0;
  select min(id) as start_v,max(id) as end_v from (

  select>
  select>  #####对不连续的值填充
  use test;
  DROP TABLE if EXISTS pincer;
  create table pincer(a int UNSIGNED);
  insert into pincer values(1),(2),(5),(100),(101),(103),(104),(105);
  select a+1 as start ,(select min(a)-1 from pincer as ww where ww.a>qq.a) as end from pincer as qq where
  not exists (select * from pincer as pp where qq.a+1=pp.a)
  and a  ################
  2,生日问题
  select  name,birthday,if(cur>today,cur,next) as birth_day
  from(
  select name,birthday,today,date_add(cur,interval if(day(birthday)=29 && day(cur)=28,1,0) day)as cur, date_ad(next,interval if(day(birthday)=29 && day(next)=28,1,0) day) as next
  from(
  select name,birthday,today,
  date_add(birthday,interval diff year) as  cur,
  date_add(birthday,interval diff+1 year) as next,
  from(
  select concat(laster_name,'',first_name) as name,
  birth_date as birthday,
  (year(now())-year(birth_date) )as diff,
  now() as today
  from employees) as a
  ) as b
  ) as c
  3,日期问题----计算工作日
  create table sals(id int ,date datetime ,cost int,primary key(id);
  select date_add('1900-01-01',
  interval floor(datediff(date,'1900-01-01')/7)*7 day)
  as week_start,
  date_add('1900-01-01',
  interval floor(datediff(date,'1900-01-01')/7*7+6 day)
  as week_end,
  sum(cost) from sales;
  计算工作日(指定2个日期段 有多少工作日)
  create procedure pgetworkdays (s datetime,e datetime)
  begin
  select floor(days/7)*5+days%7
  case when 6 between wd and wd+days%7-1 then 1 else 0 end
  case then 7 between wd and wd+days%7-1 then 1 else 0 end
  from
  (select datediff(e,s)+1 as days,weekday(s)+1 as wd) as a;
  end;


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-624790-1-1.html 上篇帖子: IOS学习之数据库(3)--SQL代码应用示例 下篇帖子: 对比SQL 学 mongo-pincer
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表