2022-05-22, 00:25
  #1
Medlem
Är nybörjare i databaser och behöver lite hjälp. Behöver får fram;
Vilken medarbetare som gjort flest bokningar i ett företag.
Har en tabell med arbetspass och behöver få fram vilken anställd som har flest pass.

Har en tabell med dessa uppgifter men hur gör jag för att få fram antal och vidare få fram den anställd som har flest?
Citera
2022-05-22, 00:32
  #2
Medlem
auruns avatar
SELECT medarbetare (eller * om du vill få fram fler kolumner) FROM tabell ORDER BY arbetspass ASC

(sen LIMIT 1) om du bara vill få fram en.

?
Citera
2022-05-22, 00:35
  #3
Medlem
webbutvecklarens avatar
Citat:
Ursprungligen postat av blodproppen
Är nybörjare i databaser och behöver lite hjälp. Behöver får fram;
Vilken medarbetare som gjort flest bokningar i ett företag.
Har en tabell med arbetspass och behöver få fram vilken anställd som har flest pass.

Har en tabell med dessa uppgifter men hur gör jag för att få fram antal och vidare få fram den anställd som har flest?
Skriv ner här namnet på din tabell och vilka kolumner som finns, och om det finns fler tabeller som själv data över bokningar finns, så ska vi kunna hjälpa dig mer specifikt.
__________________
Senast redigerad av webbutvecklaren 2022-05-22 kl. 00:38.
Citera
2022-05-22, 00:38
  #4
Medlem
Tack vad snällt!
__________________
Senast redigerad av blodproppen 2022-05-22 kl. 01:20.
Citera
2022-05-22, 00:39
  #5
Medlem
Citat:
Ursprungligen postat av aurun
SELECT medarbetare (eller * om du vill få fram fler kolumner) FROM tabell ORDER BY arbetspass ASC

(sen LIMIT 1) om du bara vill få fram en.

?

Ja precis, vill få fram den person som har genomfört flest bokningar. Alltså en person.
Citera
2022-05-22, 00:59
  #6
Medlem
webbutvecklarens avatar
Citat:
Ursprungligen postat av blodproppen
Tack vad snällt!

arbetspass_id personal_id skift_id
11 101 1001
12 102 1002
13 103 1003
14 104 1003
15 105 1004
16 108 1005
17 109 1006
18 110 1007
19 104 1007
20 106 1008
21 101 1009
22 102 1010
23 103 1011
24 104 1011
25 105 1012
Aight, då så:

SELECT u.id, COUNT(a.*) as total FROM [arbetspass] a, [users] u WHERE u.id = a.personal_id GROUP BY u.id ORDER BY total DESC LIMIT 1;

Testa detta! Jag har ej testat att det fungerar då jag skrivit via mobilen.

Du skrev ju bara ned kolumnerna och inte tabellnamnet, men du förstår ju säkert att du här får ändra det jag satt inom [ och ] till det tabellnamn du har. Och users är användartabellen där du har alla dina användares data sparat, och den tabell du har alla bokningar är "arbetspass", vilket du får ändra såvida den inte heter just så, sen får du ändra ifall du inte har "id" som kolumn i din användartabell.

Lättast hade varit ifall du angav själva namnet på tabellerna, både den du skickade med ovanför, men även tabellnamn och kolumner där du sparar dina användares data.
__________________
Senast redigerad av webbutvecklaren 2022-05-22 kl. 01:21.
Citera
2022-05-22, 01:21
  #7
Medlem
Citat:
Ursprungligen postat av blodproppen
Ja precis, vill få fram den person som har genomfört flest bokningar. Alltså en person.

Citat:
Ursprungligen postat av webbutvecklaren
Aight, då så:

SELECT u.id, COUNT(a.*) as total FROM [arbetspass] a, [users] u WHERE u.id = a.personal_id GROUP BY u.id ORDER BY total DESC LIMIT 1;

Testa detta! Jag har ej testat att det fungerar då jag skrivit via mobilen.

Du skrev ju bara ned kolumnerna och inte tabellnamnet, men du förstår ju säkert att du här får ändra det jag satt inom [ och ] till det tabellnamn du har. Och users är användartabellen där du har alla dina användares data sparat, och den tabell du har alla bokningar är "arbetspass", vilket du får ändra såvida den inte heter just så, sen får du ändra ifall du inte har "id" som kolumn i din användartabell.

Lättast hade varit ifall du angav själva namnet på tabellerna, både den du skickade med ovanför, men även namn och kolumner där du sparar dina användares data.


Tack tack tack! Ska testa köra det imorgon, återkommer om inte så kan jag försöker jag framföra all relevant info. Uppskattas enormt!
Citera
2022-05-22, 01:23
  #8
Medlem
webbutvecklarens avatar
Citat:
Ursprungligen postat av blodproppen
Tack tack tack! Ska testa köra det imorgon, återkommer om inte så kan jag försöker jag framföra all relevant info. Uppskattas enormt!
Gör du så, och varsågod!
Citera
2022-05-22, 22:16
  #9
Moderator
vhes avatar
Rubrik justerad.

Utgående rubrik: Sql
Ny rubrik: Räkna antalet rader med visst värde i SQL

Var gärna lite tydligare med rubriksättningen framöver.

/Moderator
Citera
2022-05-23, 19:13
  #10
Moderator
Pontiac-Garages avatar
Citat:
Ursprungligen postat av blodproppen
Är nybörjare i databaser och behöver lite hjälp. Behöver får fram;
Vilken medarbetare som gjort flest bokningar i ett företag.
Har en tabell med arbetspass och behöver få fram vilken anställd som har flest pass.

Har en tabell med dessa uppgifter men hur gör jag för att få fram antal och vidare få fram den anställd som har flest?

Om du enbart vill ha fram just den medarbetare som har flest förekomster (istället för en lista med alla medarbetare samt resp. persons förekomstantal) kan du köra:

Kod:
SELECT personal_id FROM
(SELECT personal_id, count(*) AS antal
    FROM tabell
    GROUP BY personal_id)
WHERE antal = (SELECT MAX(antal) FROM
(SELECT personal_id, count(*) AS antal
    FROM tabell
    GROUP BY personal_id));
Citera
2022-05-27, 17:55
  #11
Medlem
Citat:
Ursprungligen postat av aurun
SELECT medarbetare (eller * om du vill få fram fler kolumner) FROM tabell ORDER BY arbetspass ASC

(sen LIMIT 1) om du bara vill få fram en.

?

Kör för helvete inte en SELECT * och sedan en LIMIT 1.
Det där är helt onödigt och dåligt för prestandan, särskilt om databasen innehåller massvis med rader.

Kommandot MAX är det du är ute efter.

SELECT MAX(kolumn_namn) FROM tabell

Detta ger dig den som har högst värde i en specifik kolumn. Samt exekveras betydligt snabbare.
Citera
2022-09-14, 12:26
  #12
Medlem
Du har skrivit SQL, om du syftar på SQL Server så är LIMIT ingen höjdare, däremot så har du TOP

SELECT TOP 1 WITH TIES
personal_id,
COUNT(skift_id) AS antal_skift
FROM arbetspass
GROUP BY personal_id
ORDER BY antal_skift DESC
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in