1. 程式人生 > 其它 >sql語法02 group by

sql語法02 group by

技術標籤:mysql

語法規範:

1、GROUP BY子句中列出的每一列都必須是檢索列或有效的表示式(但不能是聚集函式)。如果在SELECT中使用表示式,則必須在GROUP BY子句中指定相同的表示式。不能使用別名。

2、除聚集計算語句外,SELECT語句中的每一列都必須在GROUP BY子句中給出。

基礎理解:就是對指定欄位做一個去重,
但是去重之後可能會出現一個單元格多個值的情況。
https://blog.csdn.net/shaofei63/article/details/42800793?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control

這個部落格講的很詳細,大概意思就是:如果需要在select中顯示一行多值的列的情況,那麼只能使用聚集函式。

語法理解2:過濾分組。

SELECT vend_id, COUNT() AS num_prods
FROM Products
WHERE prod_price >= 4
GROUP BY vend_id
HAVING COUNT(
) >= 2;

having 和where的區別

這裡有另一種理解方法,WHERE在資料分組前進行過濾,HAVING在資料分組後進行過濾。

題目:
求第N大工資

select nsalary from employee group by salary order
by salary desc limit n-1 offset 1;