Duplikate auf bestimmte Anzahl begrenzen

#21

CASE/ELSE war verkehrt bei der Lösung, welche mir vorgeschlagen wurde:

SELECT * FROM (
SELECT
CASE code WHEN @c THEN
@curRow := 1
ELSE @curRow := @curRow + 1
END as zeile,
@code := code AS code
FROM enocean_temp
INNER JOIN (SELECT @curRow := 0, @code := MIN(CODE) FROM enocean_temp) r) x
WHERE zeile < 4;

0 Likes

#22

?

?

Nu verstehe ichs wiederum nicht mehr!

Das wird doch durch limit, ~ “bis zu”, also “genau 3 oder weniger, aber mindestens 1”, “gedeckelt”…

Sonst beschreibe es nochmal in einem Posting so, das man dich verstehen kann.

Zum Beispiel: Nicht die Anzahl der mehrfachen Zeilen soll ausgegeben werden, sondern die mehrfachen Zeilen an sich sollen ausgegeben werden, dabei sollen … usw. …

0 Likes

#23

Mit SQL gibt es mittlerweile auch Window Functions. Persönlich hab ich damit jetzt nicht soviel am Hut, weshalb ich da jetzt nicht aus dem Ärmel schütteln kann.

Dennoch gibt es da einen Talk vom Lukas Eder, der da sehr viel Erfahrung hat. https://www.youtube.com/watch?v=mgipNdAgQ3o

Und der Punkt drei sieht doch schon sehr danach aus das nötige zu liefern um damit eine pragmatische Lösung für das Problem zu finden.

0 Likes

#24

@CyborgBeta: Tut mir leid, ich habe mich komplett verschrieben (wurde während dem Posten x mal unterbrochen), der Satz ist totaler Unsinn und verdreht die Logik komplett! :confused:

Lösung A: Das SQL MUSS so aufgebaut sein dass verschiedene Werte (theor. unendlich viele, was Varianten und Duplikate dieser betrifft) in der abzufragenden Tabelle max. 3x als Duplikate im Resultset ausgegeben werden. Bei weniger als 3 Duplikaten wird dann die tatsächliche Menge, 1 oder 2 ausgegeben.

ODER

Lösung B: Es KANN zusätzlich noch so sein dass bei weniger als 3 gleichen Datensätzen in der zugrunde liegenden Tabelle ein SQL-Resultset mit 0 Rows angezeigt wird. Das macht es aber komplizierter.

  • Es darf aber auch so sein, dass nicht mehr oder auch nicht weniger als 3 gleiche Datensätze mit dem Query ausgegeben werden.

Also eher:

  • Es darf aber auch so sein, dass nicht mehr UND auch nicht weniger als 3 gleiche Datensätze mit dem Query ausgegeben werden.

Also exakt 3…

(WTF!! :open_mouth:)

@ionutbaiu: Vielen Dank für den Link, werde ihn mir anschauen.

0 Likes

#25

Ja aber auch der Code aus dem anderen Forum ist nicht absolut “geistreich”. :confounded:

0 Likes