Sql K、 我认为这是我能做的最好的了。现在应该最好地表示联接的关系。 SELECT t1.field1, t1.field2, t1.field3, t1.field4, t1.field5,
K、 我认为这是我能做的最好的了。现在应该最好地表示联接的关系。Sql K、 我认为这是我能做的最好的了。现在应该最好地表示联接的关系。 SELECT t1.field1, t1.field2, t1.field3, t1.field4, t1.field5, ,sql,oracle,aggregate-functions,Sql,Oracle,Aggregate Functions,K、 我认为这是我能做的最好的了。现在应该最好地表示联接的关系。 SELECT t1.field1, t1.field2, t1.field3, t1.field4, t1.field5, t1.field6, t1.field7, t1.field8, t2.field1, t2.field2, t2.field3, t2.field4,
SELECT t1.field1,
t1.field2,
t1.field3,
t1.field4,
t1.field5,
t1.field6,
t1.field7,
t1.field8,
t2.field1,
t2.field2,
t2.field3,
t2.field4,
t2.field5,
t2.field6,
t2.field7,
t2.field8,
t2.field9,
t3.field1,
t4.field1,
t5.field1,
SUM(t6.field1),
MIN(t6.THEDATE)
FROM table1 t1
LEFT JOIN table2 t2
ON t1.field2 = t2.sameFieldName
LEFT JOIN table3 t3
ON t2.field9 = t3.sameFieldName
LEFT JOIN table4 t4
ON t1.field2 = t4.sameFieldName
AND t2.field1 = t4.sameFieldName
LEFT JOIN table5 t5
ON t4.field1 = t5.sameFieldName
LEFT JOIN table6 t6
ON t4.field1 = t6.sameFieldName
AND t4.colName1 = t6.sameFieldName
WHERE t6.THEDATE BETWEEN SYSDATE - 70 AND SYSDATE - 50
AND t1.field2 = 'SUBMIT'
AND t1.field3 LIKE 'H%'
GROUP BY t1.field1,
t1.field2,
t1.field3,
t1.field4,
t1.field5,
t1.field6,
t1.field7,
t1.field8,
t2.field1,
t2.field2,
t2.field3,
t2.field4,
t2.field5,
t2.field6,
t2.field7,
t2.field8,
t2.field9,
t3.field1,
t4.field1,
t5.field1;
SELECT *, sum(somthing), min(theDate)
FROM Table
WHERE min(theDate) BETWEEN SYSDATE - 70 AND SYSDATE - 50
GROUP BY <<<ALL GROUP COLUMNS>>>
SELECT a.*, sum(something), min(theDate)
FROM table_name a
GROUP BY <<list of columns in a>>
HAVING min(theDate) BETWEEN sysdate - 70 AND sysdate - 50
SELECT * FROM
(
SELECT *, sum(somthing) over(), row_number() over (order by theDate) as rn
FROM Table
WHERE theDate BETWEEN SYSDATE - 70 AND SYSDATE - 50
)
WHERE rn = 1;
SELECT *, sum(somthing), min(theDate)
FROM Table t
WHERE NOT EXISTS (SELECT 1 FROM table t2 WHERE . . . AND t2.thedate < SYSDATE - 70) AND
EXISTS (SELECT 1 FROM table t2 WHERE . . . AND t2.thedate <= sysdate - 50)
GROUP BY *
EMP (EMP_ID*, DEPT_ID, DEPT_NAME, SAL, THEDATE)
EMP(EMP_ID*, DEPT_ID, SAL, THEDATE)
DEPT(DEPT_ID*, DEPT_NAME)
"Table" == EMP JOIN DEPT USING (DEPT_ID)
SELECT DEPT_ID, DEPT_NAME, SUM(SAL), MIN(THEDATE)
FROM EMP
GROUP BY DEPT_ID, DEPT_NAME
HAVING MIN(THEDATE) >= SYSDATE-70 AND MIN(THEDATE) < SYSDATE-50;
SELECT DEPT_ID, MAX(DEPT_NAME) DEPT_NAME, SUM(SAL), MIN(THEDATE)
FROM EMP USING (DEPT_ID)
GROUP BY DEPT_ID
HAVING MIN(THEDATE) >= SYSDATE-70 AND MIN(THEDATE) < SYSDATE-50;
SELECT DEPT_ID, DEPT_NAME, SUM(SAL), MIN(THEDATE)
FROM EMP E1
WHERE NOT EXISTS
(SELECT 1 FROM EMP E2
WHERE E2.DEPT_ID = E1.DEPT_ID
AND E2.DEPT_NAME=E1.DEPT_NAME
AND E2.THEDATE < SYSDATE - 70)
AND EXISTS
(SELECT 1 FROM EMP E2
WHERE E2.DEPT_ID = E1.DEPT_ID
AND E2.DEPT_NAME=E1.DEPT_NAME
AND E2.THEDATE BETWEEN SYSDATE-70 AND SYSDATE - 50)
AND E1.THEDATE >= SYSDATE -70
GROUP BY DEPT_ID, DEPT_NAME;
SELECT DEPT_ID, MAX(DEPT_NAME) DEPT_NAME, SUM(SAL), MIN(THEDATE)
FROM EMP E1
WHERE NOT EXISTS
(SELECT 1 FROM EMP E2
WHERE E2.DEPT_ID = E1.DEPT_ID
AND E2.THEDATE < SYSDATE - 70)
AND EXISTS
(SELECT 1 FROM EMP E2
WHERE E2.DEPT_ID = E1.DEPT_ID
AND E2.THEDATE BETWEEN SYSDATE-70 AND SYSDATE - 50)
AND E1.THEDATE >= SYSDATE -70
GROUP BY DEPT_ID;