1group_concat
mysql>select student_name,
->group_concat(test_score)
->from student
->group by student_name;
or:
mysql>select student_name,
->group_concat(distinct test_score
->order by test_score desc separator ' ')
->from student
->group by student_name;
ps:就是可以在乙個語句中得到 group by 被 聚合的項的每個子值的乙個組合的字串
2with rollup
group by子句允許乙個將額外行新增到簡略輸出端 with rollup 修飾符。這些行代表高層(或高聚集)簡略操作。rollup 因而允許你在多層分析的角度回答有關問詢的問題
或者你可以使用 rollup, 它能用乙個問詢提供雙層分析。將乙個 with rollup修飾符新增到group by 語句,使詢問產生另一行結果,該行顯示了所有年份的總價值:
mysql>select year, sum(profit) from sales group by year with rollup;
| year | sum(profit) |
| 2000 | 4525 |
| 2001 | 3010 |
| null | 7535 |
總計高聚集行被年份列中的null值標出。
當有多重 group by 列時,rollup產生的效果更加複雜。這時,每次在除了最後乙個分類列之外的任何列出現乙個 「break」 (值的改變) ,則問訊會產生乙個高聚集累計行。
例如,在沒有 rollup的情況下,乙個以年、國家和產品為基礎的關於 sales 表的一覽表可能如下所示:
mysql>select year, country, product, sum(profit)
->from sales
->group by year, country, product;
| year | country | product | sum(profit) |
| 2000 | finland | computer | 1500 |
| 2000 | finland | phone | 100 |
| 2000 | india | calculator | 150 |
| 2000 | india | computer | 1200 |
| 2000 | usa | calculator | 75 |
| 2000 | usa | computer | 1500 |
| 2001 | finland | phone | 10 |
| 2001 | usa | calculator | 50 |
| 2001 | usa | computer | 2700 |
| 2001 | usa | tv | 250 |
表示總值的輸出結果僅位於年/國家/產品的分析級別。當新增了 rollup後, 問詢會產生一些額外的行:
mysql>select year, country, product, sum(profit)
->from sales
->group by year, country, product with rollup;
| year | country | product | sum(profit) |
| 2000 | finland | computer | 1500 |
| 2000 | finland | phone | 100 |
| 2000 | finland | null | 1600 |
| 2000 | india | calculator | 150 |
| 2000 | india | computer | 1200 |
| 2000 | india | null | 1350 |
| 2000 | usa | calculator | 75 |
| 2000 | usa | computer | 1500 |
| 2000 | usa | null | 1575 |
| 2000 | null | null | 4525 |
| 2001 | finland | phone | 10 |
| 2001 | finland | null | 10 |
| 2001 | usa | calculator | 50 |
| 2001 | usa | computer | 2700 |
| 2001 | usa | tv | 250 |
| 2001 | usa | null | 3000 |
| 2001 | null | null | 3010 |
| null | null | null | 7535 |
limit可用來限制返回客戶端的行數。limit 用在 rollup後面, 因此這個限制 會取消被rollup新增的行
mysql中group by 用法簡介
sql語句group by 用法簡介 經常很多情況下,我們用來做統計的資料表都是無比雜亂的,凡是每一條資料都是無厘頭的往裡插入,但是我們在按照分類或者分組來顯示統計資料的時候,這個時候就要用到神奇的group by,如下 基本語法 select 欄位1 sum 欄位2 from 名 group by...
Mysql 利用group by 分組排序
mysql的group by與oracle有所不同,查詢得字段可以不用寫聚合函式,查詢結果取得是每一組的第一行記錄。利用上面的特點,可以利用mysql實現一種獨特的排序 首先先按某個字段進行order by,然後把有順序的表進行分組,這樣每組的成員都是有順序的,而mysql預設取得分組的第一行。從而...
mysql 減少group by 的開銷
group by 一般 和集合函式一起使用,使用情況最多的 是count 即將 資料按照一定條件分組,再統計每一組的總數,顯然這是非常消耗資源的一種做法.mysql 36軍規裡 表示盡量少使用 count 也是這個原因.如果想對多種條件進行 統計 可以使用 判斷語句 如sum if sum cses...