Funkcja agregująca COUNT

Funkcja agregująca COUNT
EM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 26
0

Witam,
Chciałbym zapisać takie zapytanie w bazie danych, aby wyświetliło imię, nazwisko pracowników oraz czy posiadają numer telefonu, jeśli posiadają to ma wypisać 1, jeśli nie to wypisze 0. Mam zastosować funkcję agregującą COUNT. Prosiłbym o pomoc rozwiązaniu.

Tutaj wyświetla pracowników, którzy nie mają numeru telefonu:

Kopiuj
SELECT 		S.Staff_Id, S.First_Name, S.Last_Name, S.Phone
FROM 		Staff S	
INNER JOIN 	Classe C ON C.Staff_Id=S.Staff_Id
WHERE 		S.Phone IS NULL 

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3892
1

A to wymaga agregowania, jak ma kilka telefonów to jest kilka rekordów?

Kopiuj
SELECT      S.Staff_Id, S.First_Name, S.Last_Name
,  count(S.Phone)
FROM        Staff S 
INNER JOIN  Classe C ON C.Staff_Id=S.Staff_Id
WHERE       S.Phone IS NULL 
GROUP BY S.Staff_Id, S.First_Name, S.Last_Name

jeżeli to mają być wartości 0/1 a telefonów może być więcej to

Kopiuj
SELECT      S.Staff_Id, S.First_Name, S.Last_Name
,  case when count(S.Phone)>0 then 1 else 0 end
FROM        Staff S 
INNER JOIN  Classe C ON C.Staff_Id=S.Staff_Id
WHERE       S.Phone IS NULL 
GROUP BY S.Staff_Id, S.First_Name, S.Last_Name

Tylko count sprawdzi się tylko wtedy jeżeli przy braku telefenu będzie null a nie pusty ciąg znaków

EM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 26
0
Panczo napisał(a):

A to wymaga agregowania, jak ma kilka telefonów to jest kilka rekordów?

Kopiuj
SELECT      S.Staff_Id, S.First_Name, S.Last_Name
,  count(S.Phone)
FROM        Staff S 
INNER JOIN  Classe C ON C.Staff_Id=S.Staff_Id
WHERE       S.Phone IS NULL 
GROUP BY S.Staff_Id, S.First_Name, S.Last_Name

jeżeli to mają być wartości 0/1 a telefonów może być więcej to

Kopiuj
SELECT      S.Staff_Id, S.First_Name, S.Last_Name
,  case when count(S.Phone)>0 then 1 else 0 end
FROM        Staff S 
INNER JOIN  Classe C ON C.Staff_Id=S.Staff_Id
WHERE       S.Phone IS NULL 
GROUP BY S.Staff_Id, S.First_Name, S.Last_Name

Tylko count sprawdzi się tylko wtedy jeżeli przy braku telefenu będzie null a nie pusty ciąg znaków

Przykładowo: do konkretnej osoby jest przypisany numer telefonu i ja mam zrobić zapytanie, w którym to wyświetli w osobnych kolumnach: imię, nazwisko oraz telefon i w tej kolumnie "telefon", ma być wpisane albo 0 - jeśli nie ma numeru telefonu lub1 - jeśli posiada osoba numer telefonu.
W strukturze tabeli Telefon(Phone) ma typ danych numeryczne. Mam zrobić to zadanie z użyciem COUNT, na zajęciach użyłem CASE ale niestety otrzymałem odpowiedź, że ma być za pomocą COUNT.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.