1.查詢
寫查詢的時候,如果是多表連接查詢,先將表之間的主外鍵關係搞清楚,用到哪個表再將表連接起來,然後再寫需要查詢的字段,再寫where條件,最後,千萬別忘了分組(group by),因爲多表的數據太多,一定要分組查詢一下,將重複的去掉,不然結果會出錯.
注意:寫查詢語句時候,要注意left join的用法,left join on 當題目給出明確要求時用它,反之就默認用join on就可以.
2.SUBSTR(字段,1,3)的用法,它的用法很簡單,就是從字段的第一個,查找到第三個位置.比如說VALUES(SUBSTR('ABCDEF',1,3))輸出結果就是ABC.
3.分頁查詢的用法--ROW_NUMBER()OVER(),在一個語句中,嵌套一個查詢頁的範圍,最後輸出前幾名,例如:
SELECT
NAMES,
報警數量
FROM
( SELECT
M.NAMES AS NAMES,
COALESCE(SUM(LD.NUM),0) AS 報警數量 ,
ROWNUMBER() OVER(
ORDER BY
COALESCE(SUM(LD.NUM),0) DESC)AS RNUM
FROM
LOGSTATUS_DAY1 LD
JOIN MONITORITEM1 MI
ON LD.MONITORITEMID=MI.ID
JOIN MONITORINSTANCE1 M
ON MI.INSTANCEID=M.ID
GROUP BY
M.NAMES
ORDER BY
COALESCE(SUM(LD.STATUS),0) DESC
)
WHERE
RNUM BETWEEN 1
AND 3
這就是嵌套一個語句.分出頁,取幾個,就where幾個.其實這是一個笨方法,還有一個簡單的查詢前幾名,例如:
SELECT
C.NAMES,
SUM(A.NUM) AS SUMNUM
FROM
LOGSTATUS_DAY1 A
JOIN MONITORITEM1 B
ON A.MONITORITEMID=B.ID
JOIN MONITORINSTANCE1 C
ON B.INSTANCEID=C.ID
GROUP BY
C.NAMES
ORDER BY SUMNUM DESC
FETCH FIRST 3 ROWS ONLY
只需要在最後加上這一句就可以.