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
只需要在最后加上这一句就可以.