[學習筆記]分組資料以及on/where/having的順序問題
分組:
當我們新增了一個group by子句,就向資料庫指定了from和where子句所形成的邏輯表中的哪些列要用作對行進行分組。在我們所指定的列上具有相同值的行,將會被劃分為一組(如果group by 指定的是多列,則只有當某兩行的這幾個列的值都相等時才被分到同一組)。然後可以在分組的基礎上計算聚合函式的值。在select之後出現的但沒有被應用於聚合函式的列,必須出現在group by之後。
不能把聚合函式巢狀在另一個聚合函式中
如SUM(AVG(price))是非法的
不能使用子查詢作為一個聚合函式的值表示式
AVG(select price from products )是非法的
On where having的順序問題
在多表聯接查詢時,on比where更早起作用。系統首先根據各個表之間的聯接條件,把多個表合成一個臨時表後,再由where進行過濾,然後再計算,計算完後再由having進行過濾。由此可見,要想過濾條件起到正確的作用,首先要明白這個條件應該在什麼時候起作用,然後再決定放在那裡。
所以having是最慢的。但也不是說having沒用,當必須得到計算結果之後才能進行過濾時,就要用having了。
比如可以:HAVING SUM(price) > 300 而不能:where SUM(price) > 300,因為where的時候還沒有進行sum的計算。
但你可以利用子select語句在where的過濾條件中運用聚合函式
例:
select engagementNumber
From engagements
Where ContractPrice >= (
Select avg(ContractPrice) from engagement
)
在兩個表聯接時才用on的,所以在一個表的時候,就剩下where跟having比較了。在這單表查詢統計的情況下,如果要過濾的條件沒有涉及到要計算欄位,那它們的結果是一樣的,只是where可以使用rushmore技術,而having就不能,在速度上後者要慢。
總之:on、where、having這三個都可以加條件的子句中,on是最先執行,where次之,having最後.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-664616/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL分組中WHERE和HAVING的異同SQL
- 學習筆記:MySQL Cluster 的結果順序筆記MySql
- 【Oracle】where條件執行順序(上篇的問題延伸)Oracle
- connect by與where條件執行順序問題
- MYSQL INNODB中表資料的返回順序問題MySql
- 資料庫中where與having的區別資料庫
- Erlang學習筆記(六)順序程式的錯誤處理筆記
- (資料科學學習手札99)掌握pandas中的時序資料分組運算資料科學
- having和where
- Activiti學習筆記二:簡單順序流演示demo筆記
- MYSQL學習筆記11: DQL查詢執行順序MySql筆記
- ClickHouse原始碼筆記4:FilterBlockInputStream, 探尋where,having的實現原始碼筆記FilterBloC
- 順序表的學習
- DP筆記最長上升子序列(LIS)以及零件分組問題筆記
- jdbc的連線問題-----java資料學習筆記之2JDBCJava筆記
- SQL 優先順序join>whereSQL
- 如何克服 Apache Kafka中的資料順序問題 - DATAVERSITYApacheKafka
- 資料結構學習筆記-先序遍歷森林資料結構筆記
- 資料建模學習筆記 -- 類別不平衡問題筆記
- Laravel 學習筆記之一:備份資料以及資料填充Laravel筆記
- Solidity語言學習筆記————8、運算子優先順序Solid筆記
- thinkphp where in order 按照順序in的迴圈排序PHP排序
- Accelerated C++學習筆記--組織程式和資料C++筆記
- 多工學習中的資料分佈問題(一)
- 多工學習中的資料分佈問題(二)
- MYSQL學習筆記8: DQL分組查詢(group by)MySql筆記
- 商密學習-分組密碼加密模式筆記密碼加密模式筆記
- Git diff hash順序的問題Git
- mysql,where條件查詢等學習筆記MySql筆記
- Laravel 集合 where 返回的資料格式問題Laravel
- Swoole 學習筆記 - TCP 流資料邊界問題解決方案筆記TCP
- Transformer學習資源&順序推薦ORM
- Hbase學習筆記問題總結筆記
- 【學習筆記】組合數學筆記
- 組合數學學習筆記筆記
- 資料庫學習筆記資料庫筆記
- 4-查詢資料總量-where和having子句的使用以及使用內部函式提速函式
- 差分學習筆記筆記