Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Räkna och gruppera efter namn och datum med SQL

Postades av 2002-09-24 10:45:38 - Peter Holm, i forum asp - allmänt, Tråden har 17 Kommentarer och lästs av 1892 personer

Jag har en databas (Access) med en bl.a. en kolumn "Namn". Jag vill räkna hur många gånger resp. namn förekommer. Vill även sortera efter hur många ggr namnet förekommer. Är inne på:
SQL="SELECT COUNT(Namn) AS Antal FROM Tabell GROUP BY Namn"
Kan inte provköra där jag sitter just nu men är jag inne på rätt spår?
Jag vill även kunna gruppera namnen efter en datumkolumn i databasen. Hur får jag in ytterligare en gruppering, typ:
SQL="SELECT COUNT(Namn) AS Antal_dag FROM Tabell GROUP BY Namn AND Date" eller?
Någon som ser något direkt generalfel?


Svara

Sv: Räkna och gruppera efter namn och datum med SQL

Postades av 2002-09-24 12:14:58 - Ulf Elfving

Prova:
SQL="SELECT COUNT(Namn) AS Antal, Namn FROM Tabell GROUP BY Namn ORDER BY Antal"


Svara

Sv: Räkna och gruppera efter namn och datum med SQL

Postades av 2002-09-24 13:08:28 - Johan Djupmarker

SQL="SELECT COUNT(Namn) AS Antal, Namn FROM Tabell GROUP BY Namn ORDER BY COUNT(Namn)"

SQL="SELECT Namn, Date, COUNT(Namn) AS Antal_dag FROM Tabell GROUP BY Namn, Date"

/Johan


Svara

Sv: Räkna och gruppera efter namn och datum med SQL

Postades av 2002-09-24 15:04:16 - Andreas Hillqvist

Johan, rekomendera dig att läsa artikeln:
http://www.pellesoft.nu/login/articles/databas/count_prestanda.asp

Går lika bra om inte bättre med COUNT(*)


Svara

Sv: Räkna och gruppera efter namn och datum med SQL

Postades av 2002-09-24 15:15:58 - Johan Djupmarker

Sorry Andreas, lite mycket klipp och klistra... Men du kan få komma hem till mig och läsa igenom alla mina projekt så kommer du inte finna ett enda COUNT(något_annat_än_*) ;-) Och ja, jag har läst artikeln, fast det var ju ett tag sedan...

/Johan


Svara

Sv: Räkna och gruppera efter namn och datum med SQL

Postades av 2002-09-24 16:34:20 - Andreas Hillqvist

Du fick mig ju när det gällde AVG() funktionen. Ibland tänker man inte på allt. Då är det tur att du finns. ;o)


Svara

Sv: Räkna och gruppera efter namn och datum med SQL

Postades av 2002-09-24 23:02:40 - Peter Holm

Jag får inte till del två i mitt försök. Meningen är att ha en tabell där olika namn läggs till i en tabell vid vissa datum. Samma namn och datum kan förekomma flera gånger. I min tabell har jag:
ID|GameDate|Player

strSQL="SELECT COUNT(Player) AS Antal, Player FROM Votes GROUP BY Player ORDER BY COUNT(Player) DESC"
Detta sorterar ut så jag kan loopa ut hur många ggr ett namn förekommer totalt, t.ex.:
Player - Antal
Namn1 - 11 ggr
Namn2 - 9 ggr
Namn 12 - 7 ggr o.s.v.

Hur modifierar jag ovanstående för att blanda in datumkolumnen typ:
GameDate - Namn - Antal
2002-09-25 - Namn1 - 4 ggr
2002-09-25 - Namn2 - 3 ggr
2002-09-28 - Namn1 - 5 ggr
2002-09-28 - Namn12 - 6 ggr o.s.v.

Har försökt på längden och tvären utan att lyckas...


Svara

Sv: Räkna och gruppera efter namn och datum med SQL

Postades av 2002-09-25 00:14:29 - Andreas Hillqvist

ÄR det nåt sånt här du menar?

SQL="SELECT GameDate, Player, COUNT(*) AS Antal FROM Votes GROUP BY GameDate, Player"


Svara

Sv: Räkna och gruppera efter namn och datum med SQL

Postades av 2002-09-25 00:53:21 - Peter Holm

Klockrent, tack!


Svara

Sv: Räkna och gruppera efter namn och datum med SQL

Postades av 2002-09-25 07:51:59 - Peter Holm

Känner mig lite besvärlig men nu är det nya bud. Som ni säkert har förstått så ska det bli en typ av omröstning (till en idrottsförening). Efter varje match röstar man på "matchens lirare". Namn (Player) och matchdatum (GameDate) läggs till i en databas. Första SQL-frågan:
SQL="SELECT COUNT(Namn) AS Antal, Namn FROM Tabell GROUP BY Namn ORDER BY COUNT(Namn)" hämtar ut namet samt hur många ggr namnet har förekommit i databasen d.v.s. det totala antalet röster. Detta funkar helt OK.

Fråga två (Anders H:s förslag) visar datum, namn samt antal ggr det har förekommit/matchdag. Nu vill jag bara visa det namnet som har förekommit flest ggr/matchdag, typ:

GameDate - Namn - ggr
2002-09-25 - Namn1 - 4 ggr
2002-09-28 - Namn2 - 6 ggr
2002-09-30 - Namn14 - 9 ggr

Alltså, bara en rad per datum, och visa den spelare som har förekommit flest ggr under det datumet.

Satt stora delar av natten utan att få till det. Nu måste jag göra lite "vanligt" jobb också, och första matchen är i kväll, puhhh...


Svara

Sv: Räkna och gruppera efter namn och datum med SQL

Postades av 2002-09-25 09:25:55 - Johan Djupmarker

Detta är inte helt enkelt... Jag har nu pillat med detta i 30 minuter och hoppas att det blir riktigt (mina tester i Access verkar stämma iaf...). Det finns säkert effektivare lösningar, hoppas att någon kan rätta mig.

SELECT a.GameDate, a.Player, First(a.Antal) AS FörstaförAntal
FROM [SELECT GameDate, COUNT(*) AS Antal FROM Votes GROUP BY GameDate, Player]. AS b LEFT JOIN [SELECT GameDate, Player, COUNT(*) AS Antal FROM Votes GROUP BY GameDate, Player]. AS a ON (b.Antal = a.Antal) AND (b.GameDate = a.GameDate)
GROUP BY a.GameDate, a.Player

/Johan


Svara

Sv: Räkna och gruppera efter namn och datum med SQL

Postades av 2002-09-25 12:46:45 - Peter Holm

Tackar för att ni tar er tid. Ska testa det när jag får någon lucka i det vanliga kneget...


Svara

Sv: Räkna och gruppera efter namn och datum med SQL

Postades av 2002-09-26 21:10:44 - Peter Holm

JohanD, ditt förslag listade ungefär samma sak som Andreas. D.v.s. Samma datum på flera rader. Jag har vänt och vridit på detta men kört fast totalt.
Har nu provat ett annat upplägg på tabellen enligt:

GameDate - Player - Votes
2002-09-25 - Namn1 - 11
2002-09-25 - Namn2 - 7
2002-09-25 - Namn3 - 1
2002-09-27 - Namn1 - 2
2002-09-27 - Namn2 - 4
2002-09-27 - Namn3 - 0

Alltså när en röst faller på ett namn vid ett visst datum så adderas det i "Votes" kolumnen.

Att hämta upp och loopa ut allt med:
strSQL="SELECT GameDate, Player, Votes FROM vote" går bra men hur f-n funkar det med gruppering??
Har försökt med:
strSQL="SELECT GameDate, Player, Votes FROM vote GROUP BY GameDate" eller GROUP BY Player m.m. men oftast får jag:
"Du försökte köra en fråga med en mängdfunktion som inte innehöll det angivna uttrycket 'GameDate'."
Jag vill alltså sortera ut dels det namnet som har flest "Votes" varje datum, och dels flest "Votes" totalt och presentera detta enligt:

2002-09-25 Namn1 11
2002-09-27 Namn2 4

Totalt: Namn1 13

Några tips på hur jag ska lägga upp det? Jag har nog läst ett par hundra inlägg i forumet om gruppering men det verkar inte som något vill funka...


Svara

Sv: Räkna och gruppera efter namn och datum med SQL

Postades av 2002-09-26 21:20:52 - Johan Djupmarker

Får du flera namn på alla dagar eller bara de där flera spelare har lika många röster? Jag funderar vidare på den nya strukturen...

/Johan


Svara

Sv: Räkna och gruppera efter namn och datum med SQL

Postades av 2002-09-26 21:33:24 - Johan Djupmarker

Med den nya designen borde denna satsen fungera, den tar fram spelaren med flest röster för varje datum, om några har samma listas båda.

SELECT A.GameDate, A.MaxVotes, B.Player
FROM
(SELECT Votes.GameDate, Max(Votes.Votes) AS MaxVotes FROM Votes GROUP BY Votes.GameDate) A
INNER JOIN
(SELECT * FROM Votes) B
ON A.GameDate = B.GameDate AND A.MaxVotes = B.Votes
ORDER By A.GameDate

/Johan


Svara

Sv: Räkna och gruppera efter namn och datum med SQL

Postades av 2002-09-26 22:25:32 - Peter Holm

Visst funkar det! Då kommer frågan hur man kan summera alla "Votes" för resp. namn och presentera t.ex. en top 3 på totalt antal "Votes" över alla datum. Enligt strukturen ovan skulle det se ut typ:

Totalt
Namn1 - 13 '11+2
Namn2 - 11 '7+4
Namn3 - 1 '1+0

En annan fråga: Gör du dessa satser direkt i Access eller var lär man sig detta. Har letat på nätet som en tokig men hittar inte särskilt mycket. Framför allt inte på svenska. Det känns lite frustrerande att sitta natt efter natt utan att komma någonsatans. Dessutom har det gått åt en IR-mus och ett trådlöst tangentbord när tålamodet tryter... ;)


Svara

Sv: Räkna och gruppera efter namn och datum med SQL

Postades av 2002-09-26 22:35:20 - Johan Djupmarker

>Dessutom har det gått åt en IR-mus och ett trådlöst tangentbord när tålamodet tryter... ;)

Hehe =)

>Gör du dessa satser direkt i Access eller var lär man sig detta.

Från början gjorde jag det i Access-editorn, men man lär sig med tiden, nu skriver jag nästan allt "för hand" (därför blir det fel ibland).

De tre med flest röster totalt:
SELECT TOP 3 Player, SUM(Votes) AS VotesSum FROM Votes GROUP BY Player ORDER BY SUM(Votes) DESC

/Johan


Svara

Sv: Räkna och gruppera efter namn och datum med SQL

Postades av 2002-09-26 22:46:08 - Peter Holm

Stort tack, funkar finfint! Nu ska jag bygga lite på databasen innan det blir kudden. Tänkte inte lägga en natt till vid datorn, men...


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 814
27 960
271 761
7 504
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies