mySQL Mittelwert der größten 3 Einträge
Hallo,
ich bin zur Zeit an der Programmierung einer MYSL-Datenbank mit PHP-Abfragen beschäftigt. Nun komm ich nicht weiter.
Ich habe eine Tabelle, die wie folgt aufgebaut ist:
CREATE TABLE `ergebnisse` (
`id` bigint(20) NOT NULL auto_increment,
`tln_id` bigint(20) NOT NULL,
`wettbewerb` varchar(10) collate latin1_general_ci NOT NULL,
`ringe` int(3) NOT NULL,
`ausdatum` date NOT NULL,
`punkte` double(6,3) NOT NULL default '0.000',
PRIMARY KEY (`id`),
UNIQUE KEY `tln_id` (`tln_id`,`ausdatum`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=32 ;
--
-- Daten für Tabelle `ergebnisse`
--
INSERT INTO `ergebnisse` (`id`, `tln_id`, `wettbewerb`, `ringe`, `ausdatum`, `punkte`) VALUES
(1, 1, '30', 173, '2008-09-04', 97.745),
(3, 8, '34', 164, '2008-09-04', 64.792),
(4, 7, '22', 169, '2008-09-04', 94.978),
(5, 6, '16', 174, '2008-09-04', 96.048),
(6, 5, '20', 191, '2008-09-04', 104.477),
(7, 4, '18', 192, '2008-09-04', 104.064),
(8, 1, '30', 184, '2008-09-11', 103.960),
(9, 7, '22', 174, '2008-09-11', 97.788),
(10, 8, '34', 156, '2008-09-11', 90.168),
(13, 10, '11', 187, '2008-09-23', 98.866),
(14, 1, '30', 178, '2008-10-02', 100.570),
(16, 7, '14', 194, '2008-10-02', 101.074),
(17, 6, '8', 192, '2008-10-02', 99.456),
(18, 10, '11', 192, '2008-09-30', 99.456),
(19, 9, '34', 168, '2008-10-02', 97.104),
(20, 9, '34', 174, '2008-09-25', 100.572),
(31, 6, '3', 200, '2008-10-09', 117.000),
(29, 1, '1', 190, '2008-10-12', 104.120),
(30, 1, '4', 200, '2008-10-25', 117.800);
Nun möchte ich eine Abfrage erstellen. die mir möglichst alle Bedingungen in eine vereint.
Bedingungen:
- Ausgabe der tln_id in der Reihenfolge der besten Mittelwerte aus den jeweils 3 besten Ergebnissen (Punkte).
SELECT tln_id, AVG(punkte) AS punkte FROM ergebnisse GROUP BY tln_id ORDER BY AVG(punkte) DESC
funktioniert noch nicht so wirklich. Hier wird die Ausgabe nach dem besten Mittelwert aller Ergebnisse einer tln_id berücksichtigt. Kann man in die Formel ein LIMIT 3 eintragen, oder wie geht dies am sinnvollsten?
mfg
Puma242
Hallo,
ich bin zur Zeit an der Programmierung einer MYSL-Datenbank mit PHP-Abfragen beschäftigt. Nun komm ich nicht weiter.
Ich habe eine Tabelle, die wie folgt aufgebaut ist:
CREATE TABLE `ergebnisse` (
`id` bigint(20) NOT NULL auto_increment,
`tln_id` bigint(20) NOT NULL,
`wettbewerb` varchar(10) collate latin1_general_ci NOT NULL,
`ringe` int(3) NOT NULL,
`ausdatum` date NOT NULL,
`punkte` double(6,3) NOT NULL default '0.000',
PRIMARY KEY (`id`),
UNIQUE KEY `tln_id` (`tln_id`,`ausdatum`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=32 ;
--
-- Daten für Tabelle `ergebnisse`
--
INSERT INTO `ergebnisse` (`id`, `tln_id`, `wettbewerb`, `ringe`, `ausdatum`, `punkte`) VALUES
(1, 1, '30', 173, '2008-09-04', 97.745),
(3, 8, '34', 164, '2008-09-04', 64.792),
(4, 7, '22', 169, '2008-09-04', 94.978),
(5, 6, '16', 174, '2008-09-04', 96.048),
(6, 5, '20', 191, '2008-09-04', 104.477),
(7, 4, '18', 192, '2008-09-04', 104.064),
(8, 1, '30', 184, '2008-09-11', 103.960),
(9, 7, '22', 174, '2008-09-11', 97.788),
(10, 8, '34', 156, '2008-09-11', 90.168),
(13, 10, '11', 187, '2008-09-23', 98.866),
(14, 1, '30', 178, '2008-10-02', 100.570),
(16, 7, '14', 194, '2008-10-02', 101.074),
(17, 6, '8', 192, '2008-10-02', 99.456),
(18, 10, '11', 192, '2008-09-30', 99.456),
(19, 9, '34', 168, '2008-10-02', 97.104),
(20, 9, '34', 174, '2008-09-25', 100.572),
(31, 6, '3', 200, '2008-10-09', 117.000),
(29, 1, '1', 190, '2008-10-12', 104.120),
(30, 1, '4', 200, '2008-10-25', 117.800);
Nun möchte ich eine Abfrage erstellen. die mir möglichst alle Bedingungen in eine vereint.
Bedingungen:
- Ausgabe der tln_id in der Reihenfolge der besten Mittelwerte aus den jeweils 3 besten Ergebnissen (Punkte).
SELECT tln_id, AVG(punkte) AS punkte FROM ergebnisse GROUP BY tln_id ORDER BY AVG(punkte) DESC
funktioniert noch nicht so wirklich. Hier wird die Ausgabe nach dem besten Mittelwert aller Ergebnisse einer tln_id berücksichtigt. Kann man in die Formel ein LIMIT 3 eintragen, oder wie geht dies am sinnvollsten?
mfg
Puma242
Zuletzt bearbeitet: