[gelöst] Neue Auswertung 'Beste Ringzahl'
Verfasst: Mi 9. Nov 2016, 11:16
Bei unseren Preisschießen verwenden wir eine Auswertung die bislang nicht vertreten ist.
* Der Schütze kann beliebig viele Serien beschießen.
* Eine Serie hat 5 Schuss (LG) oder 3 Schuss (KK) auf 10er Spiegel
* Mindestens 5 Serien zur Preisberechtigung lösen
* Bester Schütze ist wer die meisten 50er (LG) bzw. 30er (KK) schießt.
Beispiel:
Ich füge noch die Prozedur bei die ich als Laie geschrieben habe um die Auswertung aus SSMDB2 abzugreifen.
Bei einer anderen Auswertung wird diese 'Beste Ringzahl' abwechselnd mit dem Besten Teiler verwendet. Aber eins nach dem anderen.
* Der Schütze kann beliebig viele Serien beschießen.
* Eine Serie hat 5 Schuss (LG) oder 3 Schuss (KK) auf 10er Spiegel
* Mindestens 5 Serien zur Preisberechtigung lösen
* Bester Schütze ist wer die meisten 50er (LG) bzw. 30er (KK) schießt.
Beispiel:
Code: Alles auswählen
----------------------------------------
|Name |50er|49er|48er|47er|46er|Rest|
----------------------------------------
|Alice | 3 | 2 | | | | |
|Bob | 2 | 2 | | 1 | | |
|Charlie | 2 | 1 | 4 | 1 | | |
|Danielle| | 5 | 2 | 1 | 1 | 1 |
----------------------------------------
Ich füge noch die Prozedur bei die ich als Laie geschrieben habe um die Auswertung aus SSMDB2 abzugreifen.
Code: Alles auswählen
DELIMITER $$
CREATE PROCEDURE Beste_Ringzahl(veranstaltung INT, disziplin INT, schusszahl INT)
BEGIN
SELECT StarterlistenID, DisziplinlID, StartNr, CONCAT(Nachname,', ',Vorname) as Name,
(SELECT COUNT(*) FROM Scheiben AS Bb WHERE Bb.TotalRing=(schusszahl*100 ) AND Aa.StartNr=Bb.StartNr AND Aa.DisziplinlID=Bb.DisziplinlID) AS Max0,
(SELECT COUNT(*) FROM Scheiben AS Bb WHERE Bb.TotalRing=(schusszahl*100-10) AND Aa.StartNr=Bb.StartNr AND Aa.DisziplinlID=Bb.DisziplinlID) AS Max1,
(SELECT COUNT(*) FROM Scheiben AS Bb WHERE Bb.TotalRing=(schusszahl*100-20) AND Aa.StartNr=Bb.StartNr AND Aa.DisziplinlID=Bb.DisziplinlID) AS Max2,
(SELECT COUNT(*) FROM Scheiben AS Bb WHERE Bb.TotalRing=(schusszahl*100-30) AND Aa.StartNr=Bb.StartNr AND Aa.DisziplinlID=Bb.DisziplinlID) AS Max3,
(SELECT COUNT(*) FROM Scheiben AS Bb WHERE Bb.TotalRing=(schusszahl*100-40) AND Aa.StartNr=Bb.StartNr AND Aa.DisziplinlID=Bb.DisziplinlID) AS Max4,
(SELECT COUNT(*) FROM Scheiben AS Bb WHERE Bb.TotalRing<(schusszahl*100-40) AND Aa.StartNr=Bb.StartNr AND Aa.DisziplinlID=Bb.DisziplinlID) AS Rest
FROM Scheiben AS Aa
WHERE StarterlistenID=veranstaltung AND DisziplinlID=disziplin
GROUP BY StartNr, DisziplinlID
ORDER BY Max0 DESC, Max1 DESC, Max2 DESC, Max3 DESC, Max4 DESC, Rest DESC;
END $$
DELIMITER;