當前位置:首頁 » 編程語言 » 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恐怕無能為力,用存儲過程吧