Ich habe MySQL-Tabelle. Ich muss zwei höchste Werte für jede Gruppe auswählen, , aber der zweithöchste Wert kann nicht "jünger" sein. Wenn der höchste Wert für Projekt 1 das Datum "2015-12-01" ist, muss der zweithöchste Wert früher als "2015-12-01" sein. Dieses Datum ist eine Benutzereingabe innerhalb der Anwendung, z. B .: Benutzereingabedatum '2014-01-03' und erhält 2 höchstwertige Reihenfolge nach Datum.SQl Abfrage - 2 höchste Werte für jede Gruppe und Sekunde muss "jünger" dann zuerst
- '2013.12.05' - 500 Besuche
'2013.10.11' - 480 viists
+ --------- + ----------- + ---------+ | project | visits | date | + --------- + ----------- + ---------+ | 1 | 750 |2015-12-01| | 1 | 582 |2014-11-01| | 1 | 423 |2013-10-02| | 2 | 666 |2016-01-01| | 2 | 812 |2012-02-02| | 2 | 450 |2014-03-05| + --------- + ----------- + -------- +
Edit: Ich versuche, dies (es ist komplizierter dann Beispiel oben) + Join-Tabelle aufgrund von ProjectName
set @num := 0, @group := '';
select ProjectName,visits, date
from
(
select date, Projects_ID, visits,
@num := if(@group = `Projects_ID`, @num + 1, 1) as row_number,
@group := Projects_ID as col
from Hits
where date < '2016-01-11' and visits > 0
order by Projects_ID,date, visits desc
) as x inner join Projects as p on x.Projects_ID =
p.ID
where x.row_number <= 2
group by ProjectName,Projects_ID, date
Ich habe Tabelle, wo der höchste Wert war, aber ich In einigen Fällen war der zweithöchste Wert der "jüngste" Wert, dann der höchste Wert.
Ich verstehe die Regeln nicht. "Daten" sind nicht "jünger" als andere Daten - früher oder später. Und was sind die erwarteten Ergebnisse für Ihre Beispieldaten? –
Ihre Anweisung "Benutzereingabedatum" macht keinen Sinn - wie bezieht sich das vom Benutzer ausgewählte Datum auf die Abfrage? –
@KristenWaite Benutzer wählen Eingangswert über die Benutzeroberfläche in meiner App .. –