select shipcountry,sum(shipvia) as totalvia,OrderDate asthefirsttime from orders group by shipcountry
比如要顯示authors表中的au_fname,au_lname,zip,city,state信息,並且按city分組(相同city的排列在一起)
錯誤的表達:
select au_fname,au_lname,zip, city,state
from authors
group by city
就會出現:服務器: 消息 8120,級別 16,狀態 1,行 1
列 'authors.au_fname'在選擇列表中無效,因爲該列既不包含在聚合函數中,也不包含在 GROUP BY子句中。
服務器: 消息 8120,級別 16,狀態 1,行 1
列 'authors.au_lname'在選擇列表中無效,因爲該列既不包含在聚合函數中,也不包含在 GROUP BY子句中。
...... 的錯誤提示。
正確的表達:
select au_fname,au_lname,zip, city,state
from authors
group by city,au_lname,au_fname,zip,state
即指定 GROUP BY 時,選擇列表中任一非聚合表達式內的所有列都應包含在GROUP BY 列表中,或者 GROUP BY表達式必須與選擇列表表達式完全匹配。
其實還有更好的辦法:
select au_fname,au_lname,zip, city,state
from authors
order by city
即使用order by 子句
還是authors表,要求在每個城市取一個作者,顯示該作者的左右信息:
可以用如下表達:
select * from authors
where au_id in
(select min(au_id)
from authors
group by city)
其實是分組後取最小ID的
比如要顯示authors表中的au_fname,au_lname,zip,city,state信息,並且按city分組(相同city的排列在一起)
錯誤的表達:
select au_fname,au_lname,zip, city,state
from authors
group by city
就會出現:服務器: 消息 8120,級別 16,狀態 1,行 1
列 'authors.au_fname'在選擇列表中無效,因爲該列既不包含在聚合函數中,也不包含在 GROUP BY子句中。
服務器: 消息 8120,級別 16,狀態 1,行 1
列 'authors.au_lname'在選擇列表中無效,因爲該列既不包含在聚合函數中,也不包含在 GROUP BY子句中。
...... 的錯誤提示。
正確的表達:
select au_fname,au_lname,zip, city,state
from authors
group by city,au_lname,au_fname,zip,state
即指定 GROUP BY時,選擇列表中任一非聚合表達式內的所有列都應包含在 GROUP BY列表中,或者 GROUP BY 表達式必須與選擇列表表達式完全匹配。
其實還有更好的辦法:
select au_fname,au_lname,zip, city,state
from authors
order by city
即使用order by 子句
還是authors表,要求在每個城市取一個作者,顯示該作者的左右信息:
可以用如下表達:
select * from authors
where au_id in
(select min(au_id)
from authors
group by city)
其實是分組後取最小ID的行