0
votes

Comment puis-je cette requête correcte

J'ai 3 tables comme ceci. Pour mes devoirs, je dois faire une requête qui sélectionne un nom de DVD, une catégorie de DVD et une moyenne des tarifs pour critiqués par au moins deux client xxx pré>

J'essaie de le faire mais cette requête ne fonctionne pas comme je le souhaite. Quelqu'un peut-il m'aider? P>

SELECT name,catergory, avg(rate) as rate FROM Dvd INNER JOIN Critic ON 
Dvd.dvdId=Critic.DvdId
GROUP BY customerName
HAVING COUNT(*) >2;


5 commentaires

Il n'y a pas de 'Catcherory' ici


Ayant compté (*)> 1;


S'il vous plaît dans les questions de code donnez un exemple de reproductible minimal - Coupe et code de coller et d'exécution, y compris l'exemple de l'exemple représentatif code; sortie souhaitée et réelle (y compris les messages d'erreur Verbatim); Tags et versions; Spécification claire et explication. Donnez au moins de code que vous pouvez, c'est que le code que vous affiche est OK étendu par le code que vous affichez n'est pas correct. (Débogage fondamental.) Pour SQL qui inclut le DBMS & DDL (y compris les contraintes et les index) et l'entrée en tant que code formaté comme une table. Comment demander Pause Pause Travaux sur l'objectif général, Cacher le code à la 1ère expression ne donnant pas ce que vous attendez et disons quoi Vous attendez et pourquoi.


Ceci est une FAQ. S'il vous plaît avant d'envisager de poster lire votre manuel et / ou votre manuel & Google Toute erreur d'erreur ou de nombreuses phrases claires, concises et précises de votre question / problème / de votre objectif, avec et sans vos chaînes / noms et site: Stackoverflow.com; lire de nombreuses réponses. Si vous postez une question, utilisez une phrase comme titre. Reflètent vos recherches. Voir Comment demander et les textes de stockage de la flèche votant. Nous ne pouvons pas raisonner, communiquer ou rechercher sauf si nous nous efforçons de (ré-réaffirmer) écrire clairement.


Dupliquer de Rechercher des valeurs en double dans MySQL


3 Réponses :


0
votes

Essayez ceci ci-dessous script-

la base du groupe par est, que vous devez regrouper avec toutes les colonnes non agrégées que vous avez sélectionnées dans la partie Sélectionner une partie de votre requête. Dans votre requête, vous avez sélectionné le nom et la colonne CATERGORY en tant que colonne non agrégée, mais ne les a pas ajoutées dans le groupe en correctement. xxx

note: Vous pouvez également ajouter une colonne "Customername" dans une pièce de sélection et de groupe si la valeur est requise. Mais gardez simplement à l'esprit, ajouter une nouvelle colonne dans le groupe par des moyens de créer de nouvelles dimensions / groupes dans la sortie. Vous devez donc faire attention à ajouter des colonnes en groupe par.


0 commentaires

0
votes

Vous devez ajouter tous les champs non agrégés dans groupe par code>. Voici vraiment bien Lire sur pourquoi La colonne sélectionnée doit être dans le groupe par clause.

Essayez toujours d'alias vos tables et d'essayer ce qui suit. P>

SELECT 
  name,
  catergory, 
  avg(rate) as rate 
FROM Dvd d
JOIN Critic c
ON d.dvdId = c.DvdId
GROUP BY 
  name,
  catergory
HAVING COUNT(*) > 2


0 commentaires

0
votes

Changer votre SQL comme ci-dessous: -

SELECT name,catergory, customerName, avg(rate) as rate 
FROM Critic left join Dvd  ON Dvd.dvdId=Critic.DvdId
GROUP BY customerName
HAVING COUNT(customerName) >1;


3 commentaires

En fait, vous avez raison. Je dois compter plus de 1 si je veux compter au moins deux. À droite?


Oui. Exactement, si vous devez trouver au moins 2, vous devez compter plus de 1.


Oui. Cela a résolu mon problème merci beaucoup. J'ai oublié de donner des commentaires, désolé.