0
votes

SQL où seulement 1 chaîne spécifique existe

Si j'ai la table ci-dessous appelée ventes , comment créer une requête SQL pour extraire les données pour les transactions lorsque seul chocolat a été vendu.

La sortie requise et attendue serait (ID de transaction 1 et 4 uniquement):

 Entrez la description de l'image ici

merci


5 commentaires

Pourquoi la ligne numéro 3 est-elle exclue du résultat?


Les échantillons de données sont mieux présentés comme texte formaté . Voir ici pour quelques conseils sur la création de belles tables.


Quel produit DBMS utilisez-vous? "SQL" est juste une langue de requête, pas le nom d'un produit de base de données spécifique. Veuillez ajouter un tag pour le produit de base de données que vous utilisez. Pourquoi devrais-je marquer mon DBMS


@Jaydipjadhav: Parce que dans la transaction avec ID = 3 chips, où également vendu


Comment puis-je demander et répondre aux questions de devoirs?


4 Réponses :


0
votes

Il existe trois transactions dans votre exemple où le chocolat a été vendu, cela tirera des données de 3 lignes.

select count(transaction_ID), sum(sales_value) from sales s1
where item  =  'Chocolate'
and transaction in
(select transaction id from  
(select transaction_id, count(*) cnt from sales)
where cnt =1)


0 commentaires

0
votes

Essayez quelque chose comme ça

SELECT COUNT(*) as TransactionID, SUM(SaleValue)
FROM TableName t1
WHERE Item = 'Chocolate' 
      AND NoT EXISTS (SELECT 1 
                      FROM TableName t2 
                      WHERE t1.TransactionID = t2.TransactionID AND t2.Item <> 'Chocolate')


1 commentaires

. . . Vous devez supprimer salevalue = 1 & utiliser somme (salevalue) au lieu de compte ()



0
votes

Vous voulez des transactions où le chocolat a été vendu mais rien d'autre. La manière déclarative de faire ce serait: xxx


0 commentaires

0
votes

Sélectionnez Compte (), transaction_id où article = 'chocolat' groupe par transaction_id ayant compté () = 1;


0 commentaires