J'utilise sqlite3. J'ai une tâche simple à faire et pour cela je dois écrire une requête SQL qui peut être exécutée dans sqlite3. Veuillez vous référer à la figure ci-dessous pour mes exemples de données, les résultats attendus et la nécessité d'interrogation. Quelqu'un m'a dit un conseil pour utiliser "group by" mais je connais très peu de choses sur SQL.Requête pour trouver le nombre de multiplications dans une table
Répondre
Essayez cette ..
SELECT sum(t)
FROM
(SELECT f1.count*f2.count t
FROM fruits f1,
fruits f2
WHERE f1.term=f2.term
AND f1.docID=111
AND f2.docID=222);
La requête interne multiplie les count
de même term
de docID = 111
et docID = 222
. La requête externe les résume tous.
MISE À JOUR: Comme l'a souligné ypercube, cela peut se faire sans la table dérivée comme ça ..
SELECT SUM(f1.count*f2.count) total
FROM fruits f1,
fruits f2
WHERE f1.term=f2.term
AND f1.docID=111
AND f2.docID=222);
est ici une solution avec toutes les étapes intermédiaires tout en travaillant dehors:
d'abord, trouver tous les fruits avec docID 111:
SELECT term, count FROM fruits
WHERE docID = 111;
Ensuite, trouver tous les fruits avec docID 222:
SELECT term, count FROM fruits
WHERE docID = 222;
ensemble sur les Rejoignez terme. Ceci est un saut conceptuel dans la mesure où vous devez voir la requête initiale ci-dessus comme un ensemble unique, puis joindre les deux ensembles ensemble:
SELECT *
FROM (SELECT term, count FROM fruits
WHERE docID = 111) as f1
INNER JOIN
(SELECT term, count FROM fruits
WHERE docID = 222) as f2
ON f1.term = f2.term;
Multiplier les deux colonnes « de comptage »:
SELECT f1.count * f2.count as multicount
FROM (SELECT term, count FROM fruits
WHERE docID = 111) as f1
INNER JOIN
(SELECT term, count FROM fruits
WHERE docID = 222) as f2
ON f1.term = f2.term;
Enfin:
Somme toutes ces colonnes ensemble. Un autre saut conceptuel, vous envelopper toute requête que vous aviez avant dans une enveloppe, puis faire des choses pour les résultats de cet ensemble, et qui vous donne une solution finale:
SELECT sum(multicount) total
FROM (
SELECT f1.count * f2.count as multicount
FROM (SELECT term, count FROM fruits
WHERE docID = 111) as f1
INNER JOIN
(SELECT term, count FROM fruits
WHERE docID = 222) as f2
ON f1.term = f2.term;
) as all_fruits;
Essayez le code: SQLFiddle
Merci beaucoup Jonathan. La réponse est si explicative même si je connais 1% de SQL, je suis capable de comprendre. Pouvez-vous me conseiller comment je peux modifier cette requête quand j'ai besoin de prendre tous les docID à la place de docID = 111 et que docID = 222 reste le même. En fait j'ai besoin d'une sortie en colonnes dans docID et résultat. –
- 1. Nombre de multiplications dans un pseudo-code
- 2. Trouver le nombre de jointures par une table de référence
- 3. Requête SQL.unable pour trouver le nombre d'actifs
- 4. Comment trouver le nombre maximum d'enregistrements pour une clé particulière dans une table
- 5. SQL pour calculer le nombre distinct pour une table désirée
- 6. trouver le nombre de 1 dans ma table dans l'ordre
- 7. requête pour compter le nombre de valeurs dans une colonne
- 8. algorithme multiplications utilisant Bitshifts
- 9. requête SQL pour trouver le prochain id dans une table dans une catégorie particulière
- 10. Procédure stockée pour trouver le nombre de lignes dans une table
- 11. comment trouver le nombre de lignes dans une table lorsque le nom de la table est dans une variable?
- 12. requête Mongo pour le nombre d'éléments dans une sous-collection
- 13. requête MySQL sur une seule table pour trouver plusieurs lignes
- 14. Requête SQL pour trouver une table contenant des données spécifiques
- 15. MongoDB - Comment obtenir le nombre pour une requête de recherche
- 16. comment obtenir le nombre de lignes dans une table de différents types dans une même table
- 17. Trouver le nombre d'éléments vérifiés d'un filtre de table pivotante
- 18. SQL pour trouver le nombre de produits expirés et le nombre total de produits par catégorie
- 19. Nombre de colonne dans une table MySQL
- 20. Comment obtenir le nombre maximum d'ID dans une table?
- 21. Nombre de lignes SQL dans une table
- 22. Utiliser Count pour trouver le nombre d'occurrences
- 23. pour trouver le nombre de groupes dans regex dans scala
- 24. Besoin de trouver le nombre de nouveaux numéros d'identification uniques dans une table MySQL
- 25. requête pour trouver le numéro donné appartient à une plage dans la table donnée
- 26. requête SQL pour trouver le nombre d'utilisateurs qui se trouvent dans deux groupes
- 27. Requête pour trouver le nombre de paramètres dans une procédure stockée ou une fonction dans SQL Server?
- 28. requête SQL pour compter le nombre de catégories
- 29. de requête pour rechercher un commentaire dans une table, le nom d'utilisateur dans une autre table
- 30. Requête pour identifier le nombre de révisions apportées à une table
D'où viennent ces numéros '3 * 1 + 2 * 9 + 4 * 0 ...'? S'il vous plaît, expliquez? –
ces nombres sont des valeurs de colonne "count" correspondantes pour "term" qui sont communes à la fois dans 111 et 222 –