Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst MySQL - suche eine Art user defined Group by

Mitglied: Dirmhirn

Dirmhirn (Level 2) - Jetzt verbinden

27.08.2012 um 13:34 Uhr, 2524 Aufrufe, 5 Kommentare

HI!

hab hier eine MySQL-Tabelle mit folendem Aufbau:

col1col2
A12
B12
B34
C11
C12
C23
D45
E67
E78

Muss jetzt alle Zeilen bei denen die erste Spalte gleich ist, zusammen bearbeiten.
zB alle Zeilen mit 'C': über die Zweite Spalte den Durchschnitt bilden und alle Zeilen die >10% davon entfernt sind - weiter verarbeiten.
nur ein Beispiel

arbeite mit PHP, mysqli und fetch_assoc()
ein Array mit allen "C"-Zeilen wäre super - so eine Art user defined Group by - gibt es das bei MySQL?

konkret geht es um kompatible und inkompatible Jahresintervalle, die ich je nachdem kombinieren muss. falls das relevant ist.

sg Dirm
Mitglied: LianenSchwinger
27.08.2012 um 13:49 Uhr
Hallo Dirm,

das kannst Du doch mit einem SQL-Statment erledigen.

01.
SELECT a.col1, a.col2 
02.
FROM tabelle a 
03.
INNER JOIN (SELECT b.col1, AVG(b.col2) col2 
04.
            FROM tabelle b  
05.
            GROUP BY b.col1) c ON c.col1 = a.col1 
06.
WHERE a.col2 > 0.1 * c.col2
Gruß Jörg
Bitte warten ..
Mitglied: Dirmhirn
27.08.2012, aktualisiert um 14:28 Uhr
Hi Jörg,

danke für die Antwort, aber das mit den 10% ist nur ein Beispiel.

Jede Zeile hat eine Jahresintervall: zB 1998-2012, oder 2003- - jeweils kompatible und inkompatible.
dann gibt es noch eine spalte mit einer bestimmten Konfiguration: xy, dc, sd

col1col2konfigyears
A12sd1999-2012
B12dc1999-2012
B34dc1999-2012
C11xy1998-2003
C12xy2004-2007
C23dc2008-2012
D45dc1999-2010
E67xy1998-2004
E78dc2001-2012

und dann gibt es noch inkompatible Jahre, die schneiden wieder "Löcher" in die "Ergebnisintervalle". Gibt es keine inkompatiblen und nur eine Konfig, dann werden alle Intervalle durch ein Offenes mit dem Startjahr ersetzt:

col1col2konfigyears
A12sd1999-
B12dc1999-
C11xy1998-2007
C23dc200|
D45dc1999-2010
E67xy1998-2004
E78dc2001-2012

so in etwa ein Beispiel ohne inkompatible. das Regelwerk ist leider ein bisschen kompliziert und noch nicht ganz ausgereift, d.h. wird sich im nächsten halben Jahr noch paar mal ändern.

werd jetzt die Zeilen einfach abfragen und in ein array schreiben - wenn ein neuer Wert in col1 kommt, dann verarbeite ich das Array und beginne von vorne mit den nächsten Daten.

hab mir gedacht, da gibts ev eine elegantere Lösung.

sg Dirm
Bitte warten ..
Mitglied: LianenSchwinger
27.08.2012 um 14:42 Uhr
... also nur so als Anmerkung würde ich die Spalte years in 2 Spalten splitten start_year und end_year.
Die Spalten könntest Du dann mit einem Update-Stament füllen.

Spielt der Wert in col2 keine Rolle beim Zusammenführen der Datensätze, oder wird da der kleinste oder der größe Wert genommen?

Ich denke das ganze kann man schon mit ein bisschen Überlegung per SQL-Update bzw. über den Umweg einer temporären Tabelle durchziehen. Die Frage ist natürlich wie groß die Tabelle ist und ob sich der Aufwand lohnt.

Gruß Jörg
Bitte warten ..
Mitglied: LianenSchwinger
27.08.2012, aktualisiert um 15:01 Uhr
... versuch mal folgendes

01.
SELECT a.col1, 
02.
       MIN(a.col2) col2, -- oder was auch immer hier übernommen werden soll 
03.
       a.konfig, 
04.
       c.start_year||'-'||CASE WHEN c.end_year < EXTRACT(YEAR FROM SYSDATE) THEN c.end_year END years 
05.
FROM tabelle a 
06.
INNER JOIN (SELECT b.col1, 
07.
                   b.konfig, 
08.
                   MIN(SUBSTR(years,1,4)) start_year 
09.
                   MAX(SUBSTR(years,6,4)) end_year 
10.
            FROM tabelle b 
11.
            GROUP BY b.col1, b.konfig) c ON a.col1 = c.col1  
12.
                                         AND a.konfig = c.konfig 
13.
GROUP BY a.col1, a.konfig,  
14.
         c.start_year || '-' || CASE WHEN c.end_year < EXTRACT(YEAR FROM SYSDATE) THEN c.end_year END 
Musst Du eventuell noch auf MySQL-Dialekt anpassen. Grundlage hier Oracle.

Gruß Jörg
Bitte warten ..
Mitglied: Dirmhirn
28.08.2012 um 13:32 Uhr
Hi!

Spalte years in 2 Spalten splitten
anfangs war geplant, nur eine Zahl zu speichern.
Wir erfassen da Testdaten und der Erfassungsprozess ist leider erst im Wachstum und die DB wächst mit oder läuft nach - wie mans nimmt
ja ich weiß, dass es so nicht im Lehrbuch steht und äußerst mühsam ist... aber naja... was sollte man sonst den ganzen Tag machen...

Danke für die Tips!
aber ich werds mit PHP machen. einfach alle Zeilen zusammen sammeln und dann verarbeiten. gibt ja Lücken in den Jahreszahlen, Sonderfälle und viiiel mehr *gg*

sg Dirm
Bitte warten ..
Ähnliche Inhalte
Datenbanken
MYSQL View group by
gelöst Frage von schneerunzelDatenbanken2 Kommentare

Hallo zusammen, ich habe eine Tabelle in einer MySQL DB über die ich eine View legen möchte: Die Tabelle ...

Datenbanken
Eine Art Access, nur mit PHP und MySQL?
gelöst Frage von McLionDatenbanken14 Kommentare

Hallo, gibt es eine Art wie Microsoft Access, nur auf PHP und MySQL aufbauend? OpenSource wäre noch schöner. Danke!

Entwicklung
SQL GROUP BY Convert Datetime
gelöst Frage von StfnCstrEntwicklung4 Kommentare

Hallo Zusammen, ich sitze schon seit gefühlten Stunden an nem Script, ist wahrscheinlich sehr simpel, jedoch seh ich den ...

Microsoft
Suche eine Art Ticket-System
Frage von REKLDDMicrosoft10 Kommentare

Hallo, ich suche ein Ticketsystem. Meine Anforderungen sind hier vielleicht etwas speziell deshalb hab ich bei google nicht das ...

Neue Wissensbeiträge
Vmware
VMware Update für den ESXi 5.5 verfügbar
Information von sabines vor 8 StundenVmware

Nach dem ganzen Hickhack um Update mit Microcode Anpassungen und Rückzug, gibt es nun für den ESXi 5.5 ein ...

CPU, RAM, Mainboards

Meltdown und Spectre: Intel zieht Microcode-Updates für Prozessoren zurück

Information von keine-ahnung vor 12 StundenCPU, RAM, Mainboards5 Kommentare

Moin, extrem lutztig. Nur gut, dass ich noch nicht beim Probanden-Bingo mitgemacht habe :-) LG, Thomas

Router & Routing
PfSense als Addon auf QNAP
Information von magicteddy vor 1 TagRouter & Routing7 Kommentare

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 1 TagDatenschutz1 Kommentar

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement26 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Server
TEMP-Profile
gelöst Frage von Forseti2003Windows Server21 Kommentare

Guten Morgen, wer kennt sie nicht, die lieben Temporären Benutzerprofile, vorallem immer dann, wenn man sie am wenigsten braucht. ...

Multimedia & Zubehör
Welches Tablet für die Verkäufer?
Frage von Hendrik2586Multimedia & Zubehör15 Kommentare

Guten Morgen meine Lieben, vielleicht könnt ihr mir ja helfen. Es geht um unsere Außendienstmitarbeiter /Verkäufer. Sie sollen demnächst ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...