DATEDIFF MS SQL LAIK

0

Hej,
Zaczynam uczyć się sql i natrafiłem na problem, którego nie potrafię rozwiązać.
Zadanie:
Wyciągnij z tabeli listę 'Instrurktor'ow oraz liczbe odbytych szkoleń. Zestawienie powinno dotyczyć osób, które pracowały pierwszy raz w 2005r.
Jak stworzyć zapytanie/ jaki argument dodać w where/ having by wyskoczyli instruktorzy z poprawna liczba szkolen (tych w 2005 i pozniej).
Wyniki wiadomo Jan - 2, Andrzej- 1
I drugi zadanie:
Ile dni minęło pomiędzy terminem pierwszego planowanego szkolenia instruktora o najdłuższym stażu a ostatnim planowanym szkoleniem instruktora o najkrótszym stażu.(Wiadomo, że to są skrajne wartości, ale jak stworzyć poprawne zapytanie jesli doszedl by nastepny rekord po 02.06.2007?)

Bardzo proszę o pomoc, pytania z pozoru banalne..

tabela_przyklad.png

5
  1. filtrujesz po szkol_anulowane = 0
  2. grupujesz po instruktor
  3. wypisujesz instruktor i count(*)
  4. dodajesz warunek w having na min(data) < 2006
0
Trevor188 napisał(a):

...
(Wiadomo, że to są skrajne wartości, ale jak stworzyć poprawne zapytanie jesli doszedl by nastepny rekord po 02.06.2007?)
...

Zakładając, że powyższe to prawda. To tak:

SELECT DATEDIFF(DAY,MIN(Data), MAX(Data))
  FROM [dbo].[tablica]

Czyli tak jak napisałeś brana jest różnica w dniach między pierwszą data i ostatnią.

Ps. Nie rozumiem btw. pytania bo sam sobie odpowiedziałeś w temacie.

1

co do drugiego to ja bym to zrobił tak:

  1. najpierw wyciągasz datę startu każdego instruktora
  2. odejmujesz od największej daty najmniejszą

przy użyciu CTE możesz to zrobić tak

WITH aaa AS ( 
  SELECT
    Min(data) data, instruktor 
  FROM 
    test
  GROUP BY 
    instruktor)
SELECT 
  Max(data) - Min(data) 
FROM 
  aaa;

1 użytkowników online, w tym zalogowanych: 0, gości: 1