2016-03-01 102 views
1

我現在面臨的問題與我的SQL查詢:SQL查詢從表中查找多個列值的計數?

場景:我需要生成講座的時隙多次出現針對教師,學科&演講日期是相同的次數。請參閱下面的所需輸出部分和SQL查詢。請讓我知道可以對現有查詢進行哪些更改。

表: 「SCHOOL_RECORDS」

FACULTY_NAME SUBJECT LECTURE_DATE LECTURE_TIME_SLOT 
---------------------------------------------------------- 
Alex   Biology 10/01/2015  0900 - 1200 
Alex   Biology 10/01/2015  0900 - 1200 
Alex   Biology 10/01/2015  0900 - 1200 
Lisa   Chemistry 10/01/2015  0900 - 1200 
Lisa   Chemistry 10/01/2015  1700 - 2200 
Lisa   Chemistry 10/01/2015  1700 - 2200 
Lisa   Chemistry 11/01/2015  0900 - 1200 

所需的輸出:

FACULTY_NAME SUBJECT LECTURE_DATE LECTURE_TIME_SLOT Count_Of_TimeSlots 
---------------------------------------------------------------------------- 
Alex   Biology 10/01/2015  0900 - 1200  3 
Lisa   Chemistry 10/01/2015  0900 - 1200  1 
Lisa   Chemistry 10/01/2015  1700 - 2200  2 
Lisa   Chemistry 11/01/2015  0900 - 1200  1 

當前SQL查詢:

Select a.FACULTY_NAME, 
     a.SUBJECT, 
     a.LECTURE_DATE, 
     a.LECTURE_TIME_SLOT, 
     b.Count_Of_TimeSlots 

from SCHOOL_RECORDS a 
inner join(
      select FACULTY_NAME, SUBJECT, LECTURE_DATE, LECTURE_TIME_SLOT,  
      count(LECTURE_TIME_SLOT) as Count_Of_TimeSlots 
      from SCHOOL_RECORDS 
      group by LECTURE_TIME_SLOT 
     ) b 
on a.FACULTY_NAME = b.FACULTY_NAME and a.SUBJECT = b.SUBJECT and  
a.LECTURE_DATE = b.LECTURE_DATE and a.LECTURE_TIME_SLOT = 
b.LECTURE_TIME_SLOT; 

提前感謝!

回答

1

試試這個..

select FACULTY_NAME, SUBJECT, LECTURE_DATE, LECTURE_TIME_SLOT,  
     count(LECTURE_TIME_SLOT) as Count_Of_TimeSlots 
     from SCHOOL_RECORDS 
     group by FACULTY_NAME, SUBJECT, LECTURE_DATE,LECTURE_TIME_SLOT 
+0

你需要在GROUP BY – Squirrel

+1

的LECTURE_TIME_SLOT oops ..編輯查詢...謝謝@Squirrel –

1
SELECT FACULTY_NAME, SUBJECT, LECTURE_DATE, LECTURE_TIME_SLOT, 
     COUNT(*) AS Count_Of_TimeSlots 
FROM SCHOOL_RECORDS 
GROUP BY FACULTY_NAME, SUBJECT, LECTURE_DATE, LECTURE_TIME_SLOT 
+0

感謝@世紀沙基和松鼠。你的建議有幫助。 –