Avatar billede bugger2 Nybegynder
18. november 2013 - 12:37 Der er 4 kommentarer og
1 løsning

SQL Tælle antal numre hvor der er mere end en optagelse på

Hejsa
Min database ser (forenklet) således ud:
tlf.nr Navn
12345678 Peter Hansen
87555657 Niels Jensen
12345678 Oda Petersen
78798081 Ove Hansen
45464748 Inga Jensen
78798081 Don Pedro
12345678 Lille Ida

hvordan kan jeg tælle antallet af telefonnumre i databasen hvor der er mere end en forekomst -altså optællingen i ovenstående eksempel skal give 2 da der kun er 2 telefonnumre (12345678 OG 78798081) der er mere end en bruger på.

Tak
Avatar billede cht22 Professor
18. november 2013 - 13:33 #1
Du kan bruge CREATE VIEW. Du skal bare lige ændre hhv. tlfnr og dintabel til hvad din kolonne og tabel hedder:


CREATE VIEW vis as SELECT *,count(tlfnr) as count FROM `dintabel` group by tlfnr;

select * FROM vis WHERE count>1;
Avatar billede michael_stim Ekspert
18. november 2013 - 13:48 #2
SELECT COUNT(*) FROM (SELECT tlf.nr FROM dinTabel GROUP BY tlf.nr HAVING COUNT(tlf.nr)>1);

Aner ikke om den fungerer, bare en idé jeg fik.
Avatar billede cht22 Professor
18. november 2013 - 14:29 #3
Efter du har lavet CREATE VIEW kan du få vist alle rækker hvor telefonnummeret er der flere gange ved brug af JOIN:


SELECT * FROM vis
JOIN dintabel
ON vis.tlfnr=dintabel.tlfnr WHERE vis.count>1 order by vis.tlfnr;
Avatar billede cht22 Professor
18. november 2013 - 16:54 #4
Hvis du skal have talt antallet af forskellige numre der er mere end 1 af så skal du bruge denne:


CREATE VIEW vis1 as SELECT *,count(tlfnr) as count FROM `dintabel` group by tlfnr;

SELECT count(tlfnr) as count_numbers FROM vis1 WHERE count > 1
Avatar billede Slettet bruger
18. november 2013 - 19:47 #5
Som #2 nævner - brug HAVING:

SELECT tlfnr
FROM Tabel
GROUP BY tlfnr
HAVING COUNT(*)>1

Denne kan også bruges:

select *
from (
SELECT navn, tlfnr, count(*) over(partition by tlfnr) Antal 
FROM Tabel
) s1
where Antal > 1
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester