当前位置:首页 » 编程语言 » sql如何实现排班
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql如何实现排班

发布时间: 2022-12-11 04:11:02

Ⅰ 如何使用sql语句完成如下的分班功能

select top 30 * from 表
order by 姓名

这样就是头30个人.

select top 30 * from 表
order by 姓名 desc

这样就是后20人

所以呢, 你用update语句的时候可以这么写。
update 表
set 班级 = '1'
where 姓名 in (select top 30 姓名 from 表 order by 姓名 desc)

再用同样的办法将后30人改成3班,
最后, 班级为空的全部改成2班, 简单吧? 呵呵

Ⅱ sql里我有一张全年工作日表,如9-1,9-2,9-4....,我建立了一个视图输入日期就可以查询当天排班

用代理作业,就是计划任务,sqlserver自带的,写好更新插入语句就会定时自动执行的。数据得进行判断,没有在新表的数据才进行插入,已经在的数据可以做更新处理,或者不处理。

Ⅲ 如何排班成台历格式 sql serever

首先我建议楼主制定作业,每个月考勤借宿后就把历史数据加转移到历史表中,然后再根据优化的一般原则来处理。估计让你提供硬件升级是不现实的,那么就数据库系统而言。可以通过对索引的优化或者重建或者新建来达到一定的优化效果。考勤软件一般是购买的,更改查询语句也很难实现。

Ⅳ 请问有没有人能详细的告诉我考勤系统V2.0、SQL Server2000里面的设置“班次“到底是怎么设置的谢谢~~

其实考勤这方面的操作也很简单!
首先是一个人事档案的管理就是填写员工的资料,
其次是班次的管理,即是对员工上的班次再系统里面进行排班,再把班次发配给员工
再次就是处理日常报表和月报表等等!
我也是做人事这方面的,若不懂的地方可来咨询我!

Ⅳ SQL如何最快实现排序

你好,很高兴回答你的问题。
具体提供一下表结构以及索引和要执行的sql语句。

Ⅵ 想在查询里面把排班班次表的班次相对应到打卡时间上,请问各位大神如何写SQL语句谢谢!!!

我以前搞过考勤系统。我把大概的思路说下,希望对你有帮助。

1,建立设定班别的table
2,增加班别的迟到早退时间栏位(小时,分钟)
3,写一个function,传入刷卡小时和分钟,当天班别。比较刷卡时间和班别的迟到早退时间,返回1(真)和0(假)(根据班别,查询出对应的迟早早退时间。第一笔卡比较迟到,最后一笔卡比较早退)
4,区分这比卡是当天的,还是昨天的,如果是昨天的要追溯到昨天
5,写一个function,传入工号,日期,获得该员工当天的班别
6,select 刷卡表,将迟到早退的function范围值为1的记录都找出来

Ⅶ SQL里面如何将现有的排班表对应到打卡时间里面

你这两张表有对应关系吗?如果有的话才可以转,没有的话就不知道哪个科室和哪个人员对应

Ⅷ mySql轮询排序,如图,排值班表,如何使用sql语句实现排序

select * from
(select t1.id-t2.min_id+1 as new_id,t1.name,t1.other
from pai_ban_biao t1
inner join (select min(id) as min_id,name from pai_ban_biao group by name )t2
on t1.name=t2.name
)t3
order by t3.new_id,t3.other

Ⅸ 数据库设计 关于时间排班和时间预定

第2张表,为每个驾证服务员添加工作日,这个表在大能达到哪去啊。假如你有10000个员工,每天也不过是10000条数据而已,做个分区表。数据量真的不大,而且有弹性,后期可以做个历史表来存储历史数据。

如果因为数据多,那么第2章表,用一个字段来表示派出与否,并用一个字段记录时间。也可以。但是这样你要查历史数据,也必须在每次更新这个表之前把数据归结到历史表中。第2章表只保留最新的数据。

在说明一下,你的那种设计,第2章表,数据量真的不多。

Ⅹ SQL2000,根据排班,员工信息表,批量生成考勤记录表。

with pb as ( --每天排班的上班准点秒数与下班准点秒数
select 工号 id,
(case d1 when 10 then 8 when -10 then 20 when 8 then 8 else 0 end)*3600 sb1,
(case d1 when 10 then 20 when -10 then 32 when 8 then 17 else 64 end)*3600 xb1,
--...
(case d31 when 10 then 8 when -10 then 20 when 8 then 8 else 0 end)*3600 sb31,
(case d31 when 10 then 20 when -10 then 32 when 8 then 17 else 64 end)*3600 xb31
),
kq1 as (
select userid id, checktime ct, checktype type, row_number() over(order by checktime) rn
from c
),
kq2 as ( --必须保证有上班就有下班且同一天上班只有1个,否则要去重
select t1.id, day(t1.checktime) dd, --几号
datediff(ss, cast(convert(char(10), t1.ct, 120) as datetime, t1.ct) sb, --上班秒数
datediff(ss, cast(convert(char(10), t1.ct, 120) as datetime, t2.ct) xb --下班秒数
from kq1 t1 join kq1 t2 on t1.id=t2.id and t1.rn=t2.rn+1
where t1.type='I'
),
kq as (
select id,
max(case when dd=1 then sb end) sb1, max(case when dd=1 then xb end) xb1,
---...
max(case when dd=31 then sb end) sb2, max(case when dd=31 then xb end) xb31,
from kq2
group by id
)
select ui.userid, ui.name,
case when kq.sb1<=pb.sb1 then '准点' else '不准点' end sb1,
case when kq.xb1>=pb.xb1 then '准点' else '不准点' end xb1,
--...
case when kq.sb31<=pb.sb31 then '准点' else '不准点' end sb31,
case when kq.xb31>=pb.xb31 then '准点' else '不准点' end xb31
from userinfo ui left join pb on ui.userid=pb.id
left join kq on ui.userid=kq.id
大致如此,没测,自己看明白后按自己需求改吧