当前位置:首页 » 编程语言 » sql把数量等分
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql把数量等分

发布时间: 2022-04-01 19:02:37

sql语句 如何把表中X的客户随机平均分配给A、B、C三个人!急!

使用order by newid() 随即排序 然后用top 1/3客户数量取A的客户
然后在剩下2/3的记录中 再用newid()随机排序 然后取1/2的客户给B
剩下的为C的客户

Ⅱ SQL语句如何各组取相同数量数据

select*fromnewsawhereidin(selecttop5idfromnewswheretype=a.type)

orderbytype

在不考虑效率的情况下,你用一下上边的

---补充---

我在我这能运行啊

createtablenews(IDint,typeint,titlevarchar(20));

insertintonewsvalues(1,1,'asdf');

insertintonewsvalues(2,1,'24324');

insertintonewsvalues(3,1,'dfasdf');

insertintonewsvalues(4,1,'aaa');

insertintonewsvalues(5,2,'asdf');

insertintonewsvalues(6,2,'24324');

insertintonewsvalues(7,2,'dfasdf');

insertintonewsvalues(8,2,'aaa');

insertintonewsvalues(9,3,'asdf');

insertintonewsvalues(10,3,'24324');

insertintonewsvalues(11,3,'dfasdf');

insertintonewsvalues(12,3,'aaa');

insertintonewsvalues(13,4,'asdf');

insertintonewsvalues(14,4,'24324');

insertintonewsvalues(15,4,'dfasdf');

insertintonewsvalues(16,4,'aaa');

Ⅲ 求sql 写法 数据按指定数量拆分最后不足,由一条数据补充

每箱300,也就是只要处理尾数,其余都是300。
如果用SQL也是可以通过循环表处理的,不过这个在程序里写逻辑会更清晰些,减少跟后台数据交换,不管效率上维护性上都推荐。
foreach(遍历你有多少批){
do while(总数>0){分配箱号;
if (总数>=300){
总数-300;
分配批次号+300;}
else{分配批次号+总数(其实就是尾数);
总数=0;
}
}
}

Ⅳ SQL语句如何实现把分数取整

round函数

Round 函数
返回按指定位数进行四舍五入的数值。
Round(expression[, numdecimalplaces])
参数
Expression
必选项。数值表达式 被四舍五入。
Numdecimalplaces
可选项。数字表明小数点右边有多少位进行四舍五入。如果小数位数是负数,则round()返回的结果在小数点左端包含指定个零.如果省略,则 Round 函数返回整数。
更详细的解释及举例
利用INT函数构造四舍五入的函数返回的结果精度有限,有时候满足不了我们的实际需要。Excel的Round函数可以解决这个问题。Round函数的作用是返回某个数字按指定位数取整后的数字。语法为ROUND(number,num_digits),其中Number是需要进行四舍五入的数字;Num_digits为指定的位数,按此位数进行四舍五入,如果 num_digits 大于 0,则四舍五入到指定的小数位,如果 num_digits 等于 0,则四舍五入到最接近的整数,如果 num_digits 小于 0,则在小数点左侧进行四舍五入。 举例来说, =ROUND(2.15, 1) 将 2.15 四舍五入到一个小数位,结果为2.2 =ROUND(2.149, 1) 将 2.149 四舍五入到一个小数位结果为2.1 =ROUND(-1.475, 2) 将 -1.475 四舍五入到两小数位结果为-1.48) =ROUND(21.5, -1) 将 21.5 四舍五入到小数点左侧一位结果为20

Ⅳ SQL想一次从总数据中提取一批数据数量,如何写

字段应该有ID吧,你先select * from table where ID<1000,在执行deleate from table where ID<1000;你要是想一次执行的话,可以用union联合,具体的我也忘了,好久没用sql了,你自己再查一下,希望对你有帮助~

Ⅵ sql怎样对查询到的数量进行运算

SELECTsl*nFROM(SELECTCOUNT(*)asslFROM表);

Ⅶ sql语句 如何分组后得到记录总数

SELECT COUNT(*)

FROM (SELECT 分组字段 FROM 表

GROUP BY 分组字段

)别名


或者

SELECT COUNT(*)

FROM (SELECT distinct 分组字段 FROM 表)别名

(7)sql把数量等分扩展阅读:

SQL分组查询

在SQL Server中使用的分组查询是ORDER BY子句,使用ORDER BY子句要同聚合函数配合使用才能完成分组查询,在SELECT查询的字段中如果字段没有使用聚合函数就必须出现在ORDER BY子句中(即SELECT后边的字段名要么出现在聚合函数中,要么在ORDER BY子句中使用)

在分组查询中还可以配合使用HAVING子句,定义查询条件。

使用group by进行分组查询

在使用group by关键字时,在select列表中可以指定的项目是有限制的,select语句中仅许以下几项:

1、被分组的列

2、为每个分组返回一个值得表达式,例如用一个列名作为参数的聚合函数

3、group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面

Ⅷ SQL 怎样将数据根据数量字段拆分成同等数量一条一条的记录

可以这样来查询:

selects.a01,s.a02,1.000asa03,s.a04
fromtable_names,
(
select1.000asval
union
select2.000
union
select3.000
)c
wheres.a03>=c.val

当然,这里c可以用一个函数来代替,就是1, 2, 3, 4, ...这样一个数值的表. 可以用这个来代替c:

selectrow_number()over(orderbyid)asval
fromsysobjects

这样查询变成:

selects.a01,s.a02,1.000asa03,s.a04
fromtable_names,
(
selectrow_number()over(orderbyid)asval
fromsysobjects--这里可以根据需要改成记录数较多的表,就是产生数值列表而已
)c
wheres.a03>=c.val

Ⅸ SQL语句:如何让一个字段按个数分成几个字段显示

可以用SQL的循环来实现,处理如下:
declare @sql varchar(max)
declare @i int
declare @l int
declare @c varchar(10)

select @i = ( select count(1) from 你的表名 )

set @l = 0
set @sql = ' select '
while @l <= @i / 3
begin
set @c = cast( @i as varchar(10) )
set @sql = @sql + max ( case when ( r_n - ) / 3 = ' + @c + then BH end) BH' + @c + ','
set @l = @l + 1
end
set @sql = @sql + ' 1 noshow from ( select row_number() over ( order by BH ) r_n,* from 你的表名 ) s group by ( r_n - 1 ) % 3 '

exec ( @sql )

注意:这其中 BH 就是你的字段名,如果是其他字段名,要改一下。

Ⅹ 求高手写sql语句,如何实现平均分布

纯sql恐怕无能为力,用存储过程吧