classes
, teacher
및 3개의 테이블이 있는 DB가 있습니다 taught
.
클래스
- ID(클래스번호)
- 제목(classesType)
- 비용(classesCost)
선생님
- 고유한 정수(teacherNum)
지도 받은
- classNum(외래 키)
- TeacherNum (외래 키)
- 날짜 필드(수업 날짜)
2015년 8월 6일 이후 가장 비싼 것부터 가장 싼 것 순으로 정렬된 고유한 수업 목록을 반환하는 쿼리를 SQL로 작성해야 합니다.
이를 위해 구별을 사용합니까? 모든 고유한 결과를 얻거나 외래 키를 활용합니다.
이게 먹힐까?
답변1
예, 다음과 같습니다.
SELECT DISTINCT *
FROM classes
WHERE ID IN
(SELECT classNum FROM taught WHERE date = CONVERT(...,Aug 6 2015 ))
ORDER BY cost ASC
답변2
나는 다음 구성을 사용했습니다 ...
CAST(FLOOR(CAST(@date as FLOAT)) as DateTime);
이렇게 하면 날짜를 부동 소수점으로 변환하고 부동 소수점 자리인 "시간" 부분을 잘라서 날짜에서 시간을 제거합니다.
약간 투박해 보이지만 하루 종일 반복적으로 사용하는 대규모 데이터세트(~100,000행)에서는 잘 작동합니다.