一、AVG
- 從 “access_log” 表的 “count” 列獲取平均值
- 訪問量高於平均訪問量的 “site_id” 和 “count”:
select site_id,count from access_log where count > (select avg(count) from access_log);
二、COUNT
1.計算 “access_log” 表中 “site_id”=3 的訪問次數
2. 計算 “access_log” 表中總記錄數
3. 計算 “access_log” 表中不同 site_id 的記錄數:
select count(distinct site_id) as nums from access_log;
三、FIRST、LAST
- 選取 “Websites” 表的 “name” 列中第一個記錄的值:
- 最後一個
四、MAX、MIN
- 下面的 SQL 語句從 “Websites” 表的 “alexa” 列獲取最大值:
- 從 “Websites” 表的 “alexa” 列獲取最小值:
五、SUM
- 查找 “access_log” 表的 “count” 字段的總數:
六、GROUP BY
- 統計 access_log 各個 site_id 的訪問量:
- 統計有記錄的網站的記錄數量
select Websites.name,count(access_log.aid) from access_log left join Websites on access_log.site_id=Websites.id group by Websites.name;
七、HAVING
WHERE 關鍵字無法與聚合函數一起使用。
HAVING 子句可以讓我們篩選分組後的各組數據
- 查找總訪問量大於 200 的網站。
select Websites.name,Websites.url,sum(access_log.count) from (access_log join Websites on access_log.site_id=Websites.id) group by Websites.name,Websites.url having sum(access_log.count)>200;
- 查找總訪問量大於 200 的網站,並且 alexa 排名小於 200。
select w.name,sum(a.count) from Websites w join access_log a on w.id=a.site_id where w.alexa<200 group by w.name having sum(a.count)>200;
八、UCASE、LCASE
從 “Websites” 表中選取 “name” 和 “url” 列,並把 “name” 列的值轉換爲大寫:
小寫
九、MID
從 “Websites” 表的 “name” 列中提取前 4 個字符:
十、LEN
選取 “name” 和 “url” 列中值的長度:
十一、ROUND
- ROUND(X): 返回參數X的四捨五入的一個整數。
mysql> select ROUND(-1.23); -> -1
mysql> select ROUND(-1.58); -> -2
mysql> select ROUND(1.58); -> 2
- ROUND(X,D): 返回參數X的四捨五入的有 D 位小數的一個數字。如果D爲0,結果將沒有小數點或小數部分。
mysql> select ROUND(1.298, 1); -> 1.3
mysql> select ROUND(1.298, 0); -> 1
ROUND 返回值被變換爲一個BIGINT!
十二、NOW
- 從 “Websites” 表中選取 name,url,及當天日期:
十三、FORMAT
- 從 “Websites” 表中選取 name, url 以及格式化爲 YYYY-MM-DD 的日期: