특정 날짜 이후와 구별되도록 선택하세요.

특정 날짜 이후와 구별되도록 선택하세요.

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행)에서는 잘 작동합니다.

관련 정보