1. 當sql語句中where,order by,group by同時使用查詢sql語句中三者的順序
where是用在你對條件的限制,當你使用group
by是一定要使用having,這個是按照什麼分組,order
by是排序,你檢索出來的記錄按照什麼順序排列,比如,字母的先後順序啊,數字的大小啊等等
2. 「group by」是否可以和「where」一起用嗎
可以。注意:where肯定在group by 之前。
3. mysql中group by 後可以用where嗎
不能的,group by表示要排序了,後面接的應該是屬性名,where後面表示提出條件之類的,如果對排序需要有條件篩選,應該在屬性名後接 having +條件 。
4. SQL中的WHERE子句中為什麼不允許應用聚集函數呢請通俗的解釋一下或者談談自己的見解!
聚合函數要與group by語句一並使用(若select中僅有聚合函數列,group by可省略)
group by的作用就是分組,只有把數據進行分組後才可以用聚合函數求值
而group by是一個分界點,分隔where與having的,按照sql語句的執行順序
當執行where時,數據尚未執行group by,無法分組,就不能使用聚合函數
而當執行having時,數據已經按照group by執行了分組,即可使用聚合函數
順便一提,select的執行順序在having之後
5. oracle資料庫中where後面可以跟groupby 嗎
1,在select 語句中可以使用group by 子句將行劃分成較小的組,一旦使用分組後select操作的對象變為各個分組後的數據,使用聚組函數返回的是每一個組的匯總信息。
使用having子句限制返回的結果集。group by 子句可以將查詢結果分組,並返回行的匯總信息Oracle 按照group by 子句中指定的表達式的值分組查詢結果。
2,在帶有group by 子句的查詢語句中,在select 列表中指定的列要麼是group by 子句中指定的列,要麼包含聚組函數 select max(sal),job emp group by job; (注意max(sal),job的job並非一定要出現,但有意義) 查詢語句的select 和group by ,having 子句是聚組函數唯一出現的地方,在where 子句中不能使用聚組函數。 select deptno,sum(sal) from emp where sal>1200 group by deptno having sum(sal)>8500 order by deptno;
3,當在gropu by 子句中使用having 子句時,查詢結果中只返回滿足having條件的組。在一個sql語句中可以有where子句和having子句。having 與where 子句類似,均用於設置限定條件 where 子句的作用是在對查詢結果進行分組前,將不符合where條件的行去掉,即在分組之前過濾數據,條件中不能包含聚合函數,使用where條件顯示特定的行。
having 子句的作用是篩選滿足條件的組,即在分組之後過濾數據,條件中經常包含聚合函數,使用having 條件顯示特定的組,也可以使用多個分組標准進行分組。
4,使用order by排序時order by子句置於group by 之後 並且 order by 子句的排序標准不能出現在select查詢之外的列。
查詢每個部門的每種職位的雇員數
select deptno,job,count(*) from emp group by deptno,job
5,記住這就行了:
在使用group by 時,有一個規則需要遵守,即出現在select列表中的欄位,如果沒有在組函數中,那麼必須出現在group by 子句中。(select中的欄位不可以單獨出現,必須出現在group語句中或者在組函數中。)
6. sql語句中的group by要怎麼用!!
語法SELECT 欄位表 FROM 表 WHERE標准 [GROUP BY 分組欄位表]Group by 是SQL Server 中常用的一種語法,語法如下:[ GROUP BY [ ALL ] group_by_expression [ ,...n ] [ WITH { CUBE | ROLLUP } ]]
1、最常用的就是這種語法,如下:Select CategoryID, AVG(UnitPrice), COUNT(UnitPrice) FROM dbo.Procts Where UnitPrice > 30GROUP BY CategoryID ORDER BY CategoryID DESC這個語句查詢出,所有產品分類的產品平均單價,單價計數。並且單價在 30 以上的記錄。
2、再看看這種語法,如下:Select CategoryID, AVG(DISTINCT UnitPrice), COUNT(DISTINCT UnitPrice) FROM dbo.Procts Where UnitPrice > 30GROUP BY CategoryID ORDER BY CategoryID DESC使用 DISTINCT 的時候,將會去除重復的價格平均單價。
3、如果希望在分類統計之後,再使用條件過濾,下面的語句可以做為參數:Select CategoryID, SUM(UnitPrice) AS SumPriceFROM dbo.ProctsGROUP BY CategoryIDHAVING SUM(UnitPrice) > 300HAVING 與 Where 語句類似,Where 是在分類之前過濾,而 HAVING 是在分類之後過濾。它和 Where 一樣使用 AND、OR、NOT、LIKE 組合使用。
4、如果希望再在分類統計中,添加匯總行,可以使用以下語句:Select CategoryID, SUM(UnitPrice), GROUPING(CategoryID) AS 'Grouping'FROM dbo.ProctsGROUP BY CategoryID WITH ROLLUPGrouping 這一列用於標識出哪一行是匯總行。它使用 ROLLUP 操作添加匯總行。
5、如果使用 WITH CUBE 將會產生一個多維分類數據集,如下:Select CategoryID, SupplierID, SUM(UnitPrice) AS SumPriceFROM dbo.ProctsGROUP BY CategoryID, SupplierID WITH CUBE 它會產生一個交叉表,產生所有可能的組合匯總。
6、使用 ROLLUP CUBE 會產生一個 NULL 空值,可以使用以下語法解決,如下:Select CASE WHEN (GROUPING(SupplierID) = 1) THEN '-1' ELSE SupplierID END AS SupplierID, SUM(UnitPrice) AS QtySumFROM dbo.ProctsGROUP BY SupplierID WITH CUBE
它首先檢查當前行是否為匯總行,如果是就可以設置一個值,這里設置為 '-1' 。
7. SQL裡面group by 語句和WHERE的區別,高手進
你老師的寫法是一個嵌套查詢語句。
==================================
我暈……樓上哪裡看出嵌套了……
好吧,樓主主要是兩個問題,
一個是什麼情況該用Group by,
還有一個是having 和where有什麼區別。
那個題目可以這樣讀的吧:
統計「每」一門課程,顯示平均分在75分以上的課程號和平均分。
如果不按每門課程統計,就變成對所有課程的分數求平均值了。顯然和需求不符。
Group By 是集計分支,只要有統計數據的地方,就極可能用到Group by。
常用的集計函數有這幾種:Count, Avg, Max, Min, Sum也就是說,如果要求某一數據的數量、平均值、最大值、最小值、總計,常常都是要和Group By連用的。
所以看見這種題目,就用Group by吧。
二,HAVING和WHERE的區別在於,HAVING是統計完以後進行過濾,而WHERE是在統計前進行過濾。
你的這個題目里,avg(score)是統計以後才得出的數據,所以只能用HAVING。
8. 寫一條sql語句把order by,group by where 包括進去
select goodsid,sum(quantity) as '訂貨總數'
from orders
group by goodsid
order by goodsid
9. 在sql server中同時存在where,groupby,orderby時,where,groupby句式後面要不要加
where後面是表達式
groupby 分組依據,需要多個分組用逗號分隔
10. SQL中where和group by可以連用嗎having算是對檢索條件的補充嗎
首先要分清幾個概念1.count() 在SqlServer中式屬於聚合函數.聚合函數要求不能出現在where中2.where 可以和 group by連用 但效果和having是不同的 where要求必須在group by 前面..意思是先過濾再分組 而having是必須在group by後面連用 是分組後的過濾 所以過濾條件在什麼位置是有很大區別的3.sql中 要求前面有聚合函數和其他欄位的,group by中必須把不是聚合函數的欄位 加進去