Ⅰ 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恐怕无能为力,用存储过程吧