❶ sql聚合函數的應用
聚合函數對一組值執行計算,並返回單個值。除了
COUNT
以外,聚合函數都會忽略空值。聚合函數經常與
SELECT
語句的
GROUP
BY
子句一起使用。
所有聚合函數均為確定性函數。也就是說,只要使用一組特定輸入值調用聚合函數,該函數總是返回相同的值。有關函數確定性的詳細信息,請參閱確定性函數和不確定性函數。
聚合函數只能在以下位置作為表達式使用:
SELECT
語句的選擇列表(子查詢或外部查詢)。
COMPUTE
或
COMPUTE
BY
子句。
HAVING
子句。
Transact-SQL
提供下列聚合函數:
AVG
MIN
CHECKSUM
SUM
CHECKSUM_AGG
STDEV
COUNT
STDEVP
COUNT_BIG
VAR
GROUPING
VARP
❷ sql語句中如何將聚合函數值和另一個值相乘
sql中提供的聚合函數,通常包括sum,count,avg,max,min,但不包括乘法;
比如有這樣一個數據集:
id x
1 1
1 2
1 3
2 4
2 5
2 6
;
想實現成如下形式
id prob_x
1 6
2 120
即讓第一組中1*2*3=6
第二組中4*5*6=120
用data步中first+retain可以實現,但data需要先排序;
而sql的聚合函數中也沒有相乘這一函數,於是有些牛人想到通過數學轉化,將乘法轉為加法,而sql中可以
用sum實現加法聚合。
說來也簡單,主要想法就是A*B=exp(lnA*B)=exp(lnA+lnB);
select id,exp(sum(log(x))) as prob_x from data_set group by id;
=============================================
但我覺得也需要補充一點東西:
首先有0的情況下,log函數的定義域為{x>0},有0出現的時候,改組最後結果肯定為0;
其次是有負數的情況,需要對絕對值進行計算,計算每組負數的個數,如果負數是偶數個,那麼結果為正,
如果為奇數個,則需要在結果上添上負號。
最後可以寫成這樣
select id,(case when sum(case when x=0 then 1 else 0 end) >0 then 0
when mod(sum(case when x<0 then 1 else 0 end),2)=0 then exp(sum(log(x)))
else -1*exp(sum(log(abs(x)))) end) as prod_x from data_set group by id;
❸ sql語句中group by,聚合函數的使用。單行子查詢返回多行怎麼辦求解答!
兩個辦法。
(1)聯合查詢(oracle寫法,如為其他資料庫自行修改,這里只提供思路)
select table.id,table.XXXXX,table.XXXXX,table.caption,table.XXXXX from table,(select id,max(caption) max_cap from table group by id) b where table.id=b.id and table.caption=b.max_cap
(2)組合查詢
select * from table where id||'_'||caption in (select id||'_'||max(caption) max_cap from table group by id)
加_是為了方防止出現特殊情況,比如id=1,caption=130 和id=11,caption=30的情況出現
不知道你是什麼資料庫,||是Oracle的連接符,用於連接字元串,其他資料庫應該也有類似的東西,這個就自己掌握吧
❹ sql字元串連接函數
MySQL: CONCAT()
Oracle: CONCAT(), ||
SQL Server: +
CONCAT() 的語法如下:
CONCAT(字串1, 字串2, 字串3, ...): 將字串1、字串2、字串3,等字串連在一起。
請注意,Oracle的CONCAT()只允許兩個參數;
換言之,一次只能將兩個字串串連起來。不過,在Oracle中,我們可以用'||'來一次串連多個字串。
來看幾個例子。假設我們有以下的表格:
Geography 表格
region_name store_name
East Boston
East New York
West Los Angeles
West San Diego
例子1:
MySQL/Oracle:
SELECT CONCAT(region_name,store_name) FROM Geography
WHERE store_name = 'Boston';
結果:
'EastBoston'
例子2:
Oracle:
SELECT region_name || ' ' || store_name FROM Geography
WHERE store_name = 'Boston';
結果:
'East Boston'
例子3:
SQL Server:
SELECT region_name + ' ' + store_name FROM Geography
WHERE store_name = 'Boston';
結果:
'East Boston'
❺ sql 語句中那些是聚合函數
常見聚合函數,max(最大)、min(最小)、sum(求和)、avg(平均)等,
示例如下,
1、創建測試表,
create table test_group(id number, value number);