国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

SELECT查詢的應用(三)

2024-07-21 02:30:52
字體:
來源:轉載
供稿:網友
分類匯總
  結構化查詢(SQL)的另一個強大的功能是分類匯總,也就是GROUP子句;MySQL當然也提供這個功能。現在還以我在《SELECT查詢的應用(二)JOIN子句的用法》中的數據庫為例說說GROUP子句的用法。

  一、查詢每個客戶的交易次數。COUNT()是一個與GROUP子句一起使用的函數,它的作用是計數:

SELECT customer,COUNT(*) AS sale_count FROM sales GROUP BY customer

返回的查詢可能結果為:

+----------+------------+
| customer | sale_count |
+----------+------------+
|    1 |     1 |
+----------+------------+
|    2 |     1 |
+----------+------------+

表示了代碼為1和2的兩個客戶分別有一次交易。

  二、查詢每個客戶的交易總額。SUM()是一個與GROUP子句一起使用的函數,它的作用是求和:

SELECT customer,SUM(PRice*amount) AS total_price FROM sales GROUP BY customer

返回的查詢結果可能為:

+----------+-------------+
| customer | total_price |
+----------+-------------+
|    1 |  12000.00 |
+----------+-------------+
|    2 |  12000.00 |
+----------+-------------+

表示了代碼為1和2的兩個客戶各有12000元的交易額。其中SUM(price*amount)表示先將price和amount即單價和數量相乘后再求和,亦即總價。

  三、查詢每個客戶的平均每次交易額。AVG()是求平均值的函數:

SELECT customer,AVG(price*amount) AS avg_price FROM sales GROUP BY customer

返回的查詢結果可能為:

+----------+-----------+
| customer | avg_price |
+----------+-----------+
|    1 | 12000.00 |
+----------+-----------+
|    2 | 12000.00 |
+----------+-----------+

表示了代碼為1和2的兩個客戶的平均每次交易的交易額都是12000元。由于我預設的數據量比較小,查詢的結果不甚明顯,請讀者諒解。可以隨意向sales表中添加一些數據,數據量越大,結果越明顯。

  四、查詢每個客戶最大的和最小的一筆成交額。MAX()和MIN()函數分別是取最大值和最小值的函數:

SELECT customer,MAX(price*amount) AS max_price,MIN(price*amount) AS min_price FROM sales GROUP BY customer

返回的查詢結果可能為:

+----------+-----------+-----------+
| customer | max_price | min_price |
+----------+-----------+-----------+
|    1 | 12000.00 | 12000.00 |
+----------+-----------+-----------+
|    2 | 12000.00 | 12000.00 |
+----------+-----------+-----------+
  
  五、查詢每一種貨物售出的平均價格。

SELECT good_code,avg(price) AS avg_price FROM sales GROUP BY good_code

對么?不對!這樣查詢到的是每種貨物各條銷售記錄中價格的平均值,并不是實際售出的所有該貨物的平均價格;對我們來說,有用的是按照銷售數量加權平均的價格:

SELECT good_code,sum(price*amount)/sum(amount) AS avg_price FROM sales GROUP BY good_code

返回的查詢結果可能為:

+-----------+-----------+
| good_code | avg_price |
+-----------+-----------+
|   A0001 |  1200.00 |
+-----------+-----------+

  六、查詢售給不同客戶的每一種貨物售出的平均價格。只要在GROUP子句中多加一個關鍵字:

SELECT good_code,customer,sum(price*amount)/sum(amount) AS avg_price FROM sales GROUP BY good_code,customer

返回的查詢結果可能為:

+-----------+----------+-----------+
| good_code | customer | avg_price |
+-----------+----------+-----------+
|   A0001 |    1 |  1200.00 |
+-----------+----------+-----------+
|   A0001 |    2 |  1200.00 |
+-----------+----------+-----------+

所有客戶和所售貨物兩項相同的記錄匯總到一起來求平均,就形成了售給不同客戶的每一種貨物售出的平均價格。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 云林县| 绿春县| 新和县| 乡城县| 志丹县| 南乐县| 康乐县| 阿合奇县| 文水县| 筠连县| 盐津县| 新乡市| 岗巴县| 丹凤县| 东安县| 明光市| 玛纳斯县| 海安县| 阿鲁科尔沁旗| 宜丰县| 武邑县| 岚皋县| 时尚| 吉林市| 西华县| 高邑县| 泰安市| 尼玛县| 天镇县| 安新县| 镇巴县| 枞阳县| 青海省| 贵港市| 通城县| 卢龙县| 科技| 平陆县| 长宁区| 隆尧县| 阿拉善盟|