WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Behöver hjälp med två MySQL-queries som gäckar mig (https://www.wn.se/forum/showthread.php?t=37847)

Althalos 2009-07-10 14:59

Hej
Jag har försökt att hitta information online, men eftersom jag inte vet exakt vilka funktioner jag letar efter är det svårt. Jag skulle verkligen uppskatta om ni kunde peka mig i rätt riktning!

1) Jag har ett tabellinlägg för varje röst. Rösten kan vara antingen 1 eller 0. Det finns en kolumn som sparat, med CURDATE(), när rösten lades. Det finns en kolumn qid som beskriver på VAD rösten lades. Jag vill plocka ut de qid som fått flest röster den senaste månaden?

2) Man kan rösta 1 eller 0 där 1 är "ja" och 0 är "nej". Vad man röstat på beskrivs av kolumnen qid. Jag vill plocka ut de jämnaste frågorna, deras qid då, alltså plocka ut de qid som i den här tabellen har jämnast proportion t. ex. 49 % av rösterna är 1 och ORDER BY det.

tack!

najk 2009-07-10 15:13

det här funkar inte men något typ "SELECT gid, COUNT(röst) AS antal_röster FROM tabell WHERE sparat > DATE_SUB(now(), INTERVAL 1 MONTH) GROUP BY gid ORDER BY antal_röster DESC"

sen kanske något sånt här "SELECT gid, COUNT(röst) AS antal_röster, SUM(röst) AS antal_röster_på_ja, antal_röster_på_ja/antal_röster AS röst_resultat FROM tabell GROUP BY qid ORDER BY röst_resultat" vet dock inte hur du får den att börja på 50 och neråt..

är som märks ingen guru på mysql, men du har kanske något att leta vidare lite på..

Magnus_A 2009-07-10 16:01

With rollup ger dig delsummor när du groupar.

rikardottosson 2009-07-10 17:23

HAVING, finns det in mySQL? Det använder man för att filtrera bort hela GROUPS när man kör GROUP BY, dvs längst ned i frågan.

tartareandesire 2009-07-10 17:30

Citat:

Originally posted by rikardottosson@Jul 10 2009, 17:23
HAVING, finns det in mySQL? Det använder man för att filtrera bort hela GROUPS när man kör GROUP BY, dvs längst ned i frågan.

Yes, HAVING finns.

Conny Westh 2009-07-10 21:43

Vi får ta det här steg för steg. Först så behöver du få ihop en summering av antalet röster på varje svarsalternativ specificerat per qid:

Kod:

  SELECT QID, VOTE, COUNT(VOTE) AS Antal
  FROM Tabell3
  GROUP BY QID, VOTE


tartareandesire 2009-07-10 23:16

Fråga 1 har najk redan svarat på:

Kod:

SELECT qid, COUNT(vote) as votes FROM votestable WHERE votedate >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH) GROUP BY qid ORDER BY votes DESC
Detta bör fungera för fråga 2:

Kod:

SELECT qid, ABS(0.5 - AVG(vote)) AS middiff, 100 * SUM(vote) / COUNT(vote) AS yespercentage FROM test_votes GROUP BY qid ORDER BY middiff ASC
Jag hoppas det framgår vad som är vad i dina tabeller och att jag inte missuppfattat något. Redigerade den andra sql-satsen så du får ut procenten ja-svar (1) direkt.

Althalos 2009-07-10 23:41

Det här fungerar grymt bra! Tack allihop som har hjälpt mig! :)


Alla tider är GMT +2. Klockan är nu 00:28.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson