Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

SQL (PostgreSQL): Gruppenweise ein LIMIT festlegen

Frage Entwicklung Datenbanken

Mitglied: thomas345

thomas345 (Level 1) - Jetzt verbinden

16.12.2013 um 17:33 Uhr, 1357 Aufrufe, 1 Kommentar

Hallo,

ich habe Daten wie diese:

id | x
1 | a
3 | a
4 | b
5 | a
6 | b
10 | c
11 | b
12 | c
13 | d

Hiervon möchte ich die id's haben, aber nur maximal zwei (oder eine definierte andere Anzahl) pro Wert in Spalte x. Welche id's pro Spalte x Wert selektiert wird, soll zufällig sein (bei normalen Abfragen mit LIMIT gibt die Datenbank gewöhnlich das selbe Ergebnis zurück, das ist aber nicht gewollt)

Beispiel für ein gültiges Ergebnis:

id
1
3
4
6
10
12
13

aber auch das hier wäre gültig:

id
3
5
6
11
10
12
13

Was ich bisher rausgefunden habe ist, dass ich mit random() und einem LIMIT die Sortierung und das LIMIT angeben kann. Hier habe ich aber das Problem, dass das LIMIT für die gesamte Abfrage gilt, und nicht für jeden einzelnen Wert der Spalte x.

Alle ids, deren Spalte x Wert maximal 2 mal vorkommt kann ich einfach selektieren, komme aber bei dem zu limitierenden Teil nicht weiter.

Für Lösungshinweise wäre ich dankbar.

MfG

Thomas

Mitglied: thomas345
18.12.2013 um 22:54 Uhr
Hallo,

falls es jemanden interessiert, eine Lösung kann so aussehen:

select x, id from (select x, id, row_number() over (partition by x order by random()) from thomas) foo where row_number <= 2
Bitte warten ..
Ähnliche Inhalte
Datenbanken
SQL Server 2008 R2 iso (3)

Frage von Doktore77 zum Thema Datenbanken ...

Netzwerkmanagement
Docusnap-SQL: Anfängerfrage (1)

Frage von PharIT zum Thema Netzwerkmanagement ...

Microsoft
gelöst Verbindung zu MS SQL Server 2016 nicht möglich (5)

Frage von Baitahook zum Thema Microsoft ...

Neue Wissensbeiträge
Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Router & Routing

PfSense auf Supermicro Intel Xeon D-15x8 SoC Bare Bone

Tipp von Dobby zum Thema Router & Routing ...

Windows Server

Exchange 2010 auf Windows Server 2016 und AD

(2)

Tipp von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Basic
Programmierung von Windows Programmen (9)

Frage von Ghost108 zum Thema Basic ...

LAN, WAN, Wireless
Brauche Hilfe: Mit (schnellem) WLAN Strecke überbrücken (9)

Frage von pierrehansen zum Thema LAN, WAN, Wireless ...

C und C++
Fehlendes verständiss von C und C++ (8)

Frage von zelamedia zum Thema C und C ...