Sto creando un sistema di cache della pagina web. Volevo creare un semplice sistema di page rank e output. Il problema è che voglio visualizzare il recordset con il punteggio di rilevanza più alto per dominio univoco. Un dominio può avere più record ma con titoli, descrizioni differenti, ecc. Il problema è che, invece di ottenere 1 recordset contenente un dominio univoco, raggruppa tutti i recordset di quel dominio univoco e li emette tutti. Voglio solo il set di record con il più alto punteggio di rilevanza per dominio unico per gruppo prima che emette il (dominio e diverso con la massima rilevanza per il gruppo) accantoSeleziona il limite massimo 1 dal gruppo
SELECT title, html, sum(relevance) FROM
(
SELECT title, html, 10 AS relevance FROM page WHERE title like ‘%about%’ UNION
SELECT title, html, 7 AS relevance FROM page WHERE html like ‘%about%’ UNION
SELECT title, html, 5 AS relevance FROM page WHERE keywords like ‘%about%’ UNION
SELECT title, html, 2 AS relevance FROM page WHERE description like ‘%about%’
) results
GROUP BY title, html
ORDER BY relevance desc;
sto ottenendo:
domain1 title html
domain1 title html
domain1 title html
domain2 title html
domain2 title html
domain2 title html
Quello che voglio è
domain1 title html
domain2 title html
domain3 title html
domain4 title html
domain5 title html
Indipendentemente dal modo in cui lo faccio, continuo a ricevere la "pertinenza" della colonna non valida – Patriotec
@kinjite: È perché "pertinenza" è un alias di colonna, a cui fa riferimento la clausola WHERE. SQL Server supporta l'alias di colonne di riferimento in GROUP BY, ma non i ponies di WHOME –
@OMG o ORDER BY, se ricordo correttamente. Ho modificato la risposta per risolvere questo problema. È molto brutto, ma funzionerà. Ho usato questo hack prima. –