Sumowanie unikatowych wierszy sql.

0

Witam was serdecznie. Mam dość dziwny problem w sql. Wydaj się to proste, ale jednak nie mogę nic wymyślić. Jest taka sytuacja. Mam tabelę nazwijmy roboczo Samochody. W tej tabeli jest kolumna o nazwie Marka z danymi:
Volkswagen
Mercedes
Volkswagen
Skoda
Skoda
Seat
Jak mam wyświetlić sumę niepowtarzających się rekordów. W tym przypadku będzie to Mercedes oraz Seat. Myślałem o czymś takim:

SELECT COUNT(Marka) FROM Samochody GROUP BY Marka HAVING COUNT(Marka)<2;

Jest blisko, ponieważ po wpisaniu wyświetlą się dwie jedynki pod sobą, czyli dwa pojedyncze rekordy jakimi są Mercedes oraz Seat. Teraz nasuwa sie pytanie. Jak dodać te dwie jedynki żeby wyszła oczekiwana suma. Ewentualnie może jest jakiś inny sposób?

0

Spróbowałbym bez COUNT na początku:
SELECT Marka FROM

2

select Count(DISTINCT Marka) FROM samochody

0

Nie wiem jaką bazę używasz ale jak dodasz SUM to powinno być ok

SELECT SUM(COUNT(Marka)) FROM Samochody GROUP BY Marka HAVING COUNT(Marka)<2; BY 
0
Damian Korczowski napisał(a):

Nie wiem jaką bazę używasz ale jak dodasz SUM to powinno być ok

SELECT SUM(COUNT(Marka)) FROM Samochody GROUP BY Marka HAVING COUNT(Marka)<2; BY 

No właśnie jak próbuje dodać funkcje SUM tak jak piszesz to wyskakuje mi Invalid use of group function

0

Przy uzyciu CTE ale możesz po p0rostu jako podzapytanie:

WITH CountSingle
as
(SELECT COUNT(Marka) cnt
FROM Samochody 
GROUP BY Marka 
HAVING COUNT(Marka)<2
)

SELECT count(1) From CountSingle

jako podzapytanie czyli:

SELECT count(1)
FROM 
(SELECT COUNT(Marka) cnt
FROM Samochody 
GROUP BY Marka 
HAVING COUNT(Marka)<2
) t
0

Wersja alternatywna:

SELECT Count(*) FROM (SELECT Marka, Count(marka) ilosc FROM Samochody GROUP BY 1) x WHERE ilosc=1
0
Marcin.Miga napisał(a):

Wersja alternatywna:

SELECT Count(*) FROM (SELECT Marka, Count(marka) ilosc FROM Samochody GROUP BY 1) x WHERE ilosc=1

W końcu zadziałało!!!! Dzięki wielkie za pomoc. Dziękuję również wszystkim za pomoc

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