㈠ sql 語句中那些是聚合函數
常見聚合函數,max(最大)、min(最小)、sum(求和)、avg(平均)等,
示例如下,
1、創建測試表,
create table test_group(id number, value number);
㈡ sql聚合函數有哪些
聚集函數
和大多數其它關系資料庫產品一樣,PostgreSQL 支持聚集函數。一個聚集函數從多個輸入行中計算出一個結果。比如,我們有在一個行集合上計算 count(數目), sum(總和), avg(均值), max(最大值), min(最小值)的函數。
比如,我們可以用下面的語句找出所有低溫中的最高溫度:
SELECT max(temp_lo) FROM weather; max
-----
46
(1 row)如果我們想知道該讀數發生在哪個城市,可能會用:
SELECT city FROM weather WHERE temp_lo = max(temp_lo); -- 錯!不過這個方法不能運轉,因為聚集函數 max 不能用於 WHERE 子句中。存在這個限制是因為 WHERE 子句決定哪些行可以進入聚集階段;因此它必需在聚集函數之前計算。不過,我們可以用其它方法實現這個目的;這里我們使用子查詢:
SELECT city FROM weather
WHERE temp_lo = (SELECT max(temp_lo) FROM weather); city
---------------
San Francisco
(1 row)這樣做是可以的,因為子查詢是一次獨立的計算,它獨立於外層查詢計算自己的聚集。
聚集同樣也常用於 GROUP BY 子句。比如,我們可以獲取每個城市低溫的最高值:
SELECT city, max(temp_lo)
FROM weather
GROUP BY city; city | max
---------------+-----
Hayward | 37
San Francisco | 46
(2 rows)這樣每個城市一個輸出。每個聚集結果都是在匹配該城市的行上面計算的。我們可以用 HAVING 過濾這些分組:
SELECT city, max(temp_lo)
FROM weather
GROUP BY city
HAVING max(temp_lo) < 40; city | max
---------+-----
Hayward | 37
(1 row)這樣就只給出那些 temp_lo 值曾經有低於 40 度的城市。最後,如果我們只關心那些名字以"S"開頭的城市,我們可以用:
SELECT city, max(temp_lo)
FROM weather
WHERE city LIKE 'S%'
GROUP BY city
HAVING max(temp_lo) < 40;語句中的 LIKE 執行模式匹配,在節9.7里有解釋。
理解聚集和 SQL 的 WHERE 和 HAVING 子句之間的關系非常重要。WHERE 和 HAVING 的基本區別如下:WHERE 在分組和聚集計算之前選取輸入行(它控制哪些行進入聚集計算),而 HAVING 在分組和聚集之後選取輸出行。因此,WHERE 子句不能包含聚集函數;因為試圖用聚集函數判斷那些行將要輸入給聚集運算是沒有意義的。相反,HAVING 子句總是包含聚集函數。當然,你可以寫不使用聚集的 HAVING 子句,但這樣做沒什麼好處,因為同樣的條件可以更有效地用於 WHERE 階段。
在前面的例子里,我們可以在 WHERE 里應用城市名稱限制,因為它不需要聚集。這樣比在 HAVING 里增加限制更加高效,因為我們避免了為那些未通過 WHERE 檢查的行進行分組和聚集計算。
㈢ 資料庫常用函數
1、系統信息函數
系統信息函數用來查詢MySQL資料庫的系統信息。
函數代碼:
SELECT VERSION()
->5.0.67-community-nt
CONNECTION_ID() 返回伺服器的連接數
DATABASE()、SCHEMA 返回當前資料庫名
USER()、SYSTEM_USER()返回當前用戶
2、日期時間函數
MySQL的日期和時間函數主要用於處理日期時間。
函數代碼:
CURDATE(),CURRENT_DATE() curdate() 返回當前日期
SELECT CURDATE()
->2014-12-17
CURTIME(),CURRENT_TIME curtime()
返回當前時間
SELECT CURTIME()
->15:59:02
3、字元串函數
函數代碼:
CHAR_LENGTH(s) char_length()返回字元串s的字元數
SELECT CHAR_LENGTH('你好123') -- 5
CONCAT(s1,s2,...) concat(s1,s2...)
將字元串s1,s2等多個字元串合並為一個字元串
4、加密函數
加密函數是MySQL用來對數據進行加密的函數。
函數代碼:
PASSWORD(str)
該函數可以對字元串str進行加密,一般情況下,PASSWORD(str)用於給用戶的密碼加密。
SELECT PASSWORD('123')
->*
5、數學函數
數學函數主要用於處理數字,包括整型、浮點數等。
函數代碼:
ABS(x) abs(x)返回x的絕對值
SELECT ABS(-1) -- 返回1
CEIL(x),CEILING(x) cell(x),celling(x)
返回大於或等於x的最小整數
SELECT CEIL(1.5) -- 返回2
㈣ 聚組函數是什麼,有哪些
就是用於計算匯總一些資料庫信息,對資料庫的數據進行統計,得到統計的結果的一些函數
比如max,min,avg 等 像excel里的分類匯總
具體地址
http://hi..com/xionghy/blog/item/629186cb3aab11fd52664fdf.html
㈤ php 常用的數組函數都有哪些 作用是什麼有什麼特點 怎麼使用
php常用的數組函數的作用特點如下:
array_change_key_case -- 返回字元串鍵名全為小寫或大寫的數組
array_chunk -- 將一個數組分割成多個
array_combine -- 創建一個數組,用一個數組的值作為其鍵名,另一個數組的值作為其值
array_count_values -- 統計數組中所有的值出現的次數
array_diff_assoc -- 帶索引檢查計算數組的差集
array_diff_key -- 使用鍵名比較計算數組的差集
array_diff_uassoc -- 用用戶提供的回調函數做索引檢查來計算數組的差集
array_diff_ukey -- 用回調函數對鍵名比較計算數組的差集
array_diff -- 計算數組的差集
array_fill_keys -- 使用指定的鍵和值填充數組
array_fill -- 用給定的值填充數組
array_filter -- 用回調函數過濾數組中的單元
array_flip -- 交換數組中的鍵和值
array_intersect_assoc -- 帶索引檢查計算數組的交集
array_intersect_key -- 使用鍵名比較計算數組的交集
array_intersect_uassoc -- 帶索引檢查計算數組的交集,用回調函數比較索引
array_intersect_ukey -- 用回調函數比較鍵名來計算數組的交集
array_intersect -- 計算數組的交集
array_key_exists -- 檢查給定的鍵名或索引是否存在於數組中
array_keys -- 返回數組中所有的鍵名
array_map -- 將回調函數作用到給定數組的單元上
array_merge_recursive -- 遞歸地合並一個或多個數組
array_merge -- 合並一個或多個數組
array_multisort -- 對多個數組或多維數組進行排序
array_pad -- 用值將數組填補到指定長度
array_pop -- 將數組最後一個單元彈出(出棧)
array_proct -- 計算數組中所有值的乘積
array_push -- 將一個或多個單元壓入數組的末尾(入棧)
array_rand -- 從數組中隨機取出一個或多個單元
array_rece -- 用回調函數迭代地將數組簡化為單一的值
array_replace_recursive -- 使用傳遞的數組遞歸替換第一個數組的元素
array_replace -- 使用傳遞的數組替換第一個數組的元素
array_reverse -- 返回一個單元順序相反的數組
array_search -- 在數組中搜索給定的值,如果成功則返回相應的鍵名
array_shift -- 將數組開頭的單元移出數組
array_slice -- 從數組中取出一段
array_splice -- 把數組中的一部分去掉並用其它值取代
array_sum -- 計算數組中所有值的和
array_udiff_assoc -- 帶索引檢查計算數組的差集,用回調函數比較數據
array_udiff_uassoc -- 帶索引檢查計算數組的差集,用回調函數比較數據和索引
array_udiff -- 用回調函數比較數據來計算數組的差集
array_uintersect_assoc -- 帶索引檢查計算數組的交集,用回調函數比較數據
array_uintersect_uassoc -- 帶索引檢查計算數組的交集,用回調函數比較數據和索引
array_uintersect -- 計算數組的交集,用回調函數比較數據
array_unique -- 移除數組中重復的值
array_unshift -- 在數組開頭插入一個或多個單元
array_values -- 返回數組中所有的值
array_walk_recursive -- 對數組中的每個成員遞歸地應用用戶函數
array_walk -- 對數組中的每個成員應用用戶函數
array -- 新建一個數組
arsort -- 對數組進行逆向排序並保持索引關系
asort -- 對數組進行排序並保持索引關系
compact -- 建立一個數組,包括變數名和它們的值
count -- 計算數組中的單元數目或對象中的屬性個數
current -- 返回數組中的當前單元
each -- 返回數組中當前的鍵/值對並將數組指針向前移動一步
end -- 將數組的內部指針指向最後一個單元
extract -- 從數組中將變數導入到當前的符號表
in_array -- 檢查數組中是否存在某個值
key -- 從關聯數組中取得鍵名
krsort -- 對數組按照鍵名逆向排序
ksort -- 對數組按照鍵名排序
list -- 把數組中的值賦給一些變數
natcasesort -- 用「自然排序」演算法對數組進行不區分大小寫字母的排序
natsort -- 用「自然排序」演算法對數組排序
next -- 將數組中的內部指針向前移動一位
pos -- current 的別名
prev -- 將數組的內部指針倒回一位
range -- 建立一個包含指定范圍單元的數組
reset -- 將數組的內部指針指向第一個單元
rsort -- 對數組逆向排序
shuffle -- 將數組打亂
sizeof -- count 的別名
sort -- 對數組排序
uasort -- 使用用戶自定義的比較函數對數組中的值進行排序並保持索引關聯
uksort -- 使用用戶自定義的比較函數對數組中的鍵名進行排序
usort -- 使用用戶自定義的比較函數對數組中的值進行排序
關於如何使用,那是要根據使用者需求來衡量,不能一言概括
使用語法如下:
<?php
$arr=array('Hello','World!');
$arr=implode(',',$arr);
echo$arr;
?>
結果是:HelloWorld!
如果你想更多的了解php的數組函數,我建議你詳細地去看看php手冊
php手冊官網:http://www.php.net/manual/zh/index.php
㈥ oracle 的組函數有哪些
AVG 返回平均值
COUNT 返回記錄的數量
MAX 返回最大值
MIN 返回最小值
SUM 返回總值
STDDEV 返回標准差
VARIANCE 返回統計方差
㈦ mysql中常用的聚合函數有哪些
一、AVG
AVG(col):返回指定列的平均值
二、COUNT
COUNT(col):返回指定列中非NULL值的個數
三、MIN/MAX
MIN(col):返回指定列的最小值
MAX(col):返回指定列的最大值
四、SUM
SUM(col):返回指定列的所有值之和
五、GROUP_CONCAT
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
返回由屬於一組的列值連接組合而成的結果
(7)資料庫中的組函數有哪些擴展閱讀
增加新用戶
(注意:和上面不同,下面的因為是 MySQL 環境中的命令,所以後面都帶一個分號作為命令結束符)
格式:grant select on 資料庫.* to 用戶名@登錄主機 identified by 「密碼」
例1、增加一個用戶 test1 密碼為 abc,讓他可以在任何主機上登錄,並對所有資料庫有查詢、插入、修改、刪除的許可權。首先用以 root 用戶連入 MySQL,然後鍵入以下命令:
grant select,insert,update,delete on *.* to test1@「%」 Identified by 「abc」;
但例1增加的用戶是十分危險的,你想如某個人知道test1的密碼,那麼他就可以在internet上的任何一台電腦上登錄你的mysql資料庫並對你的數據可以為所欲為了,解決辦法見例2。
例2、增加一個用戶 test2 密碼為 abc,讓他只可以在 localhost 上登錄,並可以對資料庫 mydb 進行查詢、插入、修改、刪除的操作(localhost指本地主機,即MYSQL資料庫所在的那台主機),這樣用戶即使用知道test2的密碼,他也無法從internet上直接訪問資料庫,只能通過MYSQL主機上的web頁來訪問了。
grant select, insert, update, delete on mydb.* to test2@localhost identified by 「abc」;
如果你不想 test2 有密碼,可以再打一個命令將密碼消掉。
grant select, insert, update, delete on mydb.* to test2@localhost identified by 「」;
下面來看看 MySQL 中有關資料庫方面的操作。注意:必須首先登錄到 MySQL 中,以下操作都是在 MySQL 的提示符下進行的,而且每個命令以分號結束。
㈧ sql中常用的聚合函數有哪些
聚合函數是對一組值執行計算並返回單一的值的函數,它經常與SELECT語句的GROUP BY子句一同使用,SQL SERVER 中具體有哪些聚合函數呢?我們來一一看一下:
1. AVG 返回指定組中的平均值,空值被忽略。
例:select prd_no,avg(qty) from sales group by prd_no
2. COUNT 返回指定組中項目的數量。
例:select count(prd_no) from sales
3. MAX 返回指定數據的最大值。
例:select prd_no,max(qty) from sales group by prd_no
4. MIN 返回指定數據的最小值。
例:select prd_no,min(qty) from sales group by prd_no
5. SUM 返回指定數據的和,只能用於數字列,空值被忽略。
例:select prd_no,sum(qty) from sales group by prd_no
6. COUNT_BIG 返回指定組中的項目數量,與COUNT函數不同的是COUNT_BIG返回bigint值,而COUNT返回的是int值。
例:select count_big(prd_no) from sales
7. GROUPING 產生一個附加的列,當用CUBE或ROLLUP運算符添加行時,輸出值為1.當所添加的行不是由CUBE或ROLLUP產生時,輸出值為0.
例:select prd_no,sum(qty),grouping(prd_no) from sales group by prd_no with rollup
8. BINARY_CHECKSUM 返回對表中的行或表達式列表計算的二進制校驗值,用於檢測表中行的更改。
例:select prd_no,binary_checksum(qty) from sales group by prd_no
9. CHECKSUM_AGG 返回指定數據的校驗值,空值被忽略。
例:select prd_no,checksum_agg(binary_checksum(*)) from sales group by prd_no
10. CHECKSUM 返回在表的行上或在表達式列表上計算的校驗值,用於生成哈希索引。
11. STDEV 返回給定表達式中所有值的統計標准偏差。
例:select stdev(prd_no) from sales
12. STDEVP 返回給定表達式中的所有值的填充統計標准偏差。
例:select stdevp(prd_no) from sales
13. VAR 返回給定表達式中所有值的統計方差。
例:select var(prd_no) from sales
14. VARP 返回給定表達式中所有值的填充的統計方差。
例:select varp(prd_no) from sales
㈨ ORACLE中什麼是組函數
組(多行)函數
與單行函數相比,oracle提供了豐富的基於組的,多行的函數。這些函數可以在select或select的having子句中使用,當用於select子串時常常都和GROUP BY一起使用。
AVG([{DISYINCT|ALL}])
返回數值的平均值。預設設置為ALL.
SELECT AVG(sal),AVG(ALL sal),AVG(DISTINCT sal) FROM scott.empAVG(SAL) AVG(ALL SAL) AVG(DISTINCT SAL)1877.94118 1877.94118 1916.071413
COUNT({*|DISTINCT|ALL} )
返回查詢中行的數目,預設設置是ALL,*表示返回所有的行。
MAX([{DISTINCT|ALL}])
返回選擇列表項目的最大值,如果x是字元串數據類型,他返回一個VARCHAR2數據類型,如果X是一個DATA數據類型,返回一個日期,如果X是numeric數據類型,返回一個數字。注意distinct和all不起作用,應為最大值與這兩種設置是相同的。
MIN([{DISTINCT|ALL}])
返回選擇列表項目的最小值。
STDDEV([{DISTINCT|ALL}])
返回選者的列表項目的標准差,所謂標准差是方差的平方根。
SUM([{DISTINCT|ALL}])
返回選擇列表項目的數值的總和。
VARIANCE([{DISTINCT|ALL}])
返回選擇列表項目的統計方差。
用GROUP BY給數據分組
正如題目暗示的那樣組函數就是操作那些已經分好組的數據,我們告訴資料庫用GROUP BY怎樣給數據分組或者分類,當我們在SELECT語句的SELECT子句中使用組函數時,我們必須把為分組或非常數列放置在GROUP BY子句中,如果沒有用group by進行專門處理,那麼預設的分類是將整個結果設為一類。
select stat,counter(*) zip_count from zip_codes GROUP BY state;ST ZIP_COUNT-- ---------AK 360AL 1212AR 1309AZ 768CA 3982
在這個例子中,我們用state欄位分類;如果我們要將結果按照zip_codes排序,可以用ORDER BY語句,ORDER BY子句可以使用列或組函數。
select stat,counter(*) zip_count from zip_codes GROUP BY state ORDER BY COUNT(*) DESC;ST COUNT(*)-- --------NY 4312PA 4297TX 4123CA 3982
用HAVING子句限制分組數據
現在你已經知道了在查詢的SELECT語句和ORDER BY子句中使用主函數,組函數只能用於兩個子串中,組函數不能用於WHERE子串中,例如下面的查詢是錯誤的:
錯誤SELECT sales_clerk,SUN(sale_amount) FROM gross_sales WHERE sales_dept='OUTSIDE' AND SUM(sale_amount)>10000 GROUP BY sales_clerk
這個語句中資料庫不知道SUM()是什麼,當我們需要指示資料庫對行分組,然後限制分組後的行的輸出時,正確的方法是使用HAVING語句:
SELECT sales_clerk,SUN(sale_amount) FROM gross_sales WHERE sales_dept='OUTSIDE' GROUP BY sales_clerkHAVING SUM(sale_amount)>10000;
㈩ 資料庫函數有哪些有人嗎
有 Funciton , 也就是函數
有 Procere , 也就是存儲過程
有 Package, 也就是 代碼包 (包含 head 和 body 兩部分, 可以理解為一個包裡面,定義多個 存儲過程或函數)
有 Types, 也就是 自定義數據類型
有 Triggers, 也就是 觸發器
有 Jobs, 也就是 資料庫作業 (定期執行的)
有 Table , 也就是表 (表有 普通表, 臨時表, 分區表)
有 Index, 也就是索引
有 Constraint, 也就是 約束 ( 也就是 某個表裡面的某一列, 必須滿足什麼約束條件)
有 View, 也就是 視圖
有 Materialized View, 叫 「物化視圖」, 這個有點復雜的。
有 Sequence , 叫 序列號。
有 User , 叫 用戶
有 Profile , 叫 用戶屬性文件 (用於限制 每個用戶 佔有資料庫資源的限制)
有 Synonyms, 叫 「同義詞」 (用於 便捷地訪問 其他用戶下的對象)
有 Database link 叫 「鏈接資料庫」 (用於訪問 其他機器上的 Oracle 資料庫)
有 TableSpace 叫 表空間 (用於 存放表數據的)
有 CURSOR 叫 游標, 用於 存儲過程裡面, 遍歷數據的。