/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
[SQL] At vælge top 10 duplikater
Fra : Anders M


Dato : 31-05-07 19:09

Hej.

Jeg påtænker at udbygge en hjemmesides søgefunktion med "mest brugte
søgninger".
Der skal således fremtrylles en liste på ti af de mest brugte søgetermer.

Jeg havde tænkt mig at lagre samtlige søgetermer, som de besøgende bruger, i
en relation SearchTerms = (_ID_, Term).

Men hvordan hulen kan man udtrække de ti mest benyttede søgetermer, altså
dem, der optræder flest gange i SearchTerms?

Efter lidt googlen rundt, fandt jeg følgende SQL, hvor jeg blot har indsat
en "TOP 10":

SELECT TOP 10 Term,
COUNT(Term) AS NumOccurrences
FROM SearchTerms
GROUP BY Term
HAVING ( COUNT(Term) > 1 )

Men det sorterer ikke resultatet efter NumOccurrences. Jeg har forsøgt at
rette lidt til med noget ORDER BY osv., men uden held.

Nogen bud på hvordan jeg får det sorteret efter NumOccurrences? Eller er jeg
helt skævt på den indtil nu?

Mvh.
Anders





 
 
Peter Lykkegaard (31-05-2007)
Kommentar
Fra : Peter Lykkegaard


Dato : 31-05-07 20:58

Anders M wrote:
>
> Efter lidt googlen rundt, fandt jeg følgende SQL, hvor jeg blot har
> indsat en "TOP 10":
>
> SELECT TOP 10 Term,
> COUNT(Term) AS NumOccurrences
> FROM SearchTerms
> GROUP BY Term
> HAVING ( COUNT(Term) > 1 )
>
> Nogen bud på hvordan jeg får det sorteret efter NumOccurrences?

Hvilket databasesystem?

på MSSQL kunne man gøre noget a la dette

SELECT * FROM (
SELECT TOP 10 Term,
COUNT(Term) AS NumOccurrences
FROM SearchTerms
GROUP BY Term
HAVING ( COUNT(Term) > 1 )
) As V
ORDER BY NumOccurrences

- Peter

--
Hi! I'm a .signature *virus*!
Copy me into your ~/.signature to help me spread!



Jens Gyldenkærne Cla~ (31-05-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 31-05-07 21:37

Anders M skrev:

> Efter lidt googlen rundt, fandt jeg følgende SQL, hvor jeg
> blot har indsat en "TOP 10":

Hvilken database benytter du?

TOP n er MSSQL/Access-syntaks, mysql bruger LIMIT i stedet

> SELECT TOP 10 Term,
> COUNT(Term) AS NumOccurrences
> FROM SearchTerms
> GROUP BY Term
> HAVING ( COUNT(Term) > 1 )
>
> Men det sorterer ikke resultatet efter NumOccurrences.

Ikke så mærkeligt, da du ikke beder den om at sortere.

> Jeg har forsøgt at rette lidt til med noget ORDER BY osv., men
> uden held.

1) Hvad har du forsøgt
2) Hvordan virkede det ikke? (syntaksfejl, ingen sortering, gal
sortering)?


> Nogen bud på hvordan jeg får det sorteret efter
> NumOccurrences?

Ganske simpelt - tilføj

   ORDER BY NumOccurences DESC

I MSSQL (og muligvis Access) kan du dog ikke bruge alias-navnet i
samme select-sætning - her bruges i stedet COUNT direkte:

   ORDER BY COUNT(Term) DESC
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177458
Tips : 31962
Nyheder : 719565
Indlæg : 6408170
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste