sql >> Database >  >> RDS >> Mysql

SQL-query om het aantal keren te tellen dat bepaalde waarden in meerdere rijen voorkomen

Ja. wat je hebt zou moeten werken. (Je moet een alias toevoegen aan de afgeleide tabel, de foutmelding die je krijgt zou voor zichzelf moeten spreken. Makkelijk op te lossen, voeg gewoon een spatie en de letter c (of welke naam je maar wilt) toe aan het einde van je zoekopdracht.

Er is één waarschuwing met betrekking tot het potentieel voor dubbele (VoterID, ElectionID) tupels.

Als je een unieke beperking hebt (VoterID, ElectionID), dan werkt je zoekopdracht prima.

Als u geen unieke beperking heeft (waardoor dubbele (VoterID, ElectionId) ), dan is er een mogelijkheid dat een kiezer met twee (2) rijen voor ElectionID 1 en geen rijen voor ElectionID 2... voor die kiezer wordt opgenomen in de telling. En een kiezer die twee keer heeft gestemd in ElectionID 1 en slechts één keer in ElectionID 2, die kiezer wordt uitgesloten van de telling.

Het opnemen van het DISTINCT-zoekwoord in een COUNT zou dat probleem oplossen, bijvoorbeeld

HAVING COUNT(DISTINCT ElectionID) = 2

Ik zou de vraag anders schrijven, maar wat je hebt zal werken.

Om de telling van VoterID te krijgen die heeft deelgenomen aan zowel ElectionID 1 als ElectionID2, voor betere prestaties, zou ik het gebruik van een inline-weergave vermijden (MySQL noemt het een afgeleide tabel). Ik zou de query in plaats daarvan een JOIN-bewerking laten gebruiken. Zoiets als dit:

SELECT COUNT(DISTINCT e1.voterID) AS NumVoters
  FROM elections e1
  JOIN elections e2
    ON e2.voterID = e1.voterID
 WHERE e1.electionID = 1
   AND e2.electionID = 2

Als u er zeker van bent dat (voterID, ElectionID) uniek is, dan kan de selectie eenvoudiger zijn:

SELECT COUNT(1) AS NumVoters
  FROM elections e1
  JOIN elections e2
    ON e2.voterID = e1.voterID
 WHERE e1.electionID = 1
   AND e2.electionID = 2


  1. Hoe kan ik rijen SELECTEREN met MAX (kolomwaarde), PARTITION door een andere kolom in MYSQL?

  2. Android SQLite:hoe een grote tabel genereren voor testdoeleinden?

  3. Hoe voeg ik een controlebeperking toe aan een Rails-migratie?

  4. SQuirreL SQL verbinden met Microsoft Excel