SQL查询从表中查找多个列值的计数?

问题描述:

我现在面临的问题与我的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; 

提前感谢!

试试这个..

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 –

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

感谢@世纪沙基和松鼠。你的建议有帮助。 –