oracle T_sql笔记

1.将表中字段连接起来

使用||作为连接符

如TABLE_A中有字段FIRST_NAME,LAST_NAME,AGE,SEX;

SQL:SELECT 'FName:' || FIRST_NAME || '  LName:' || LAST_NAME AS 姓名 FROM TABLE_A;

2.聚合之后只能显示聚合的列和聚合函数计算的值

显示年龄和性别相同的数据的个数,年龄,性别。

不能显示姓名,因为没有通过姓名分组。

SELECT SUM(*),AGE,SEX FROM TABLE_A GROUP BY AGE,SEX;

3.多表链接且分组后,不能显示行号,可以这么做:再包一层,将原有sql作为一个表去查一次就可以添加上ROWNUM了。

4.多变连接且分组后,可以通过聚合函数的结果来排序(order by)

TBL_TH_QUESTION 题目表

TBL_TH_TMPL_QU 考试模板和题目关系表

 

TBL_TH_QUGROUP 题目分组表

TBL_TH_QUTYPE 题目类型表(题型表)

sql


SELECT
    题型,
    难度, 
    模块||'-'||子模块 AS temp,
    总分,
    题目数量,
    ROWNUM AS 排序
FROM
    (
        SELECT
            E.QUTY_NAME       AS 题型,
            A.QU_DIF_LEVEL    AS 难度,
            C.QUGR_NAME       AS 模块,
            D.QUGR_NAME       AS 子模块,
            SUM(B.TMQU_SCORE) AS 总分,
            COUNT(*)          AS 题目数量
        FROM
            TBL_TH_QUESTION A
        LEFT JOIN
            TBL_TH_TMPL_QU B
        ON
            A.QU_KEY=B.TMQU_QU_KEY
        LEFT JOIN
            TBL_TH_QUGROUP C
        ON
            C.QUGR_KEY=A.QU_GROUP_KEY
            LEFT JOIN
            TBL_TH_QUGROUP D
        ON
            C.QUGR_PARENTKEY=D.QUGR_KEY
        LEFT JOIN
            TBL_TH_QUTYPE E
        ON
           E.QUTY_KEY=A.QU_TYPE_KEY
        WHERE
            A.QU_KEY IN
            (
                SELECT
                    TMQU_QU_KEY
                FROM
                    TBL_TH_TMPL_QU
                WHERE
                    TMQU_TMPL_KEY='A782FC01BE8047F18F333A3CC9B6AACE' )
        GROUP BY
            E.QUTY_NAME,
            A.QU_DIF_LEVEL,
             C.QUGR_NAME,
             D.QUGR_NAME
        ORDER BY
            SUM(B.TMQU_SORT));
原文地址:https://www.cnblogs.com/zhangyongheng/p/7347083.html