可以這樣去理解group by和聚合函式

2022-06-05 08:54:07 字數 1244 閱讀 4531

文章**:

可以這樣去理解group by和聚合函式

寫在前面的話:用了好久group by,今天早上一覺醒來,突然感覺group by好陌生,總有個筋別不過來,為什麼不能夠select * from table group by id,為什麼一定不能是*,而是某乙個列或者某個列的聚合函式,group by 多個字段可以怎麼去很好的理解呢?不過最後還是轉過來了,簡單寫寫吧,大牛們直接略過吧。

先來看下表1,表名為test:

執行如下sql語句:

select  name  from  test

group by name

你應該很容易知道執行的結果,沒錯,就是下表2:

可是為了能夠更好的理解「group by」多個列「和」聚合函式「的應用,我建議在思考的過程中,由表1到表2的過程中,增加乙個虛構的中間表:虛擬表3。

下面說說如何來思考上面sql語句執**況:

from test:該句執行後,應該結果和表1一樣,就是原來的表。

from test group by name:該句執行後,我們想象生成了虛擬表3,如下所圖所示,生成過程是這樣的:group by name,那麼找name那一列,具有相同name值的行,合併成一行,如對於name值為aa的,那麼<1 aa 2>與<2 aa 3>兩行合併成1行,所有的id值和number值寫到乙個單元格裡面。

接下來就要針對虛擬表3執行select語句了:

至此,我已經對我自己對如此簡單的問題有如此天馬行空的想法所折服,洗洗睡覺。

可以這樣去理解group by和聚合函式

寫在前面的話 用了好久group by,今天早上一覺醒來,突然感覺group by好陌生,總有個筋別不過來,為什麼不能夠select from table group by id,為什麼一定不能是 而是某乙個列或者某個列的聚合函式,group by 多個字段可以怎麼去很好的理解呢?不過最後還是轉過來...

可以這樣去理解group by和聚合函式

關於group by和聚合函式 寫在前面的話 用了好久group by,今天早上一覺醒來,突然感覺group by好陌生,總有個筋別不過來,為什麼不能夠select from table group by id,為什麼一定不能是 而是某乙個列或者某個列的聚合函式,group by 多個字段可以怎麼去...

this指標可以這樣理解

有下面的乙個簡單的類 class cnullpointcall int cnullpointcall m istatic 0 void cnullpointcall test1 void cnullpointcall test2 void cnullpointcall test3 int itest...