2016-07-21 12 views
0

ich diese Daten Tabelle unten, dass habe ich aus einer Datenbank am ZugeMindestwert einer Spalte zu einem anderen Spalte Wert entsprechend

type week amount 
    a 201304 77 
    a 201304 77 
    a 201304 77 
    a 201304 77 
    a 201304 71 
    a 201304 71 
    a 201305 77 
    a 201305 77 
    a 201305 77 
    a 201305 77 
    a 201305 77 
    a 201305 77 

ich nur den Minimalwert aus der amount Spalte für jede Woche zu ziehen versuchen nur, so dass Tabelle wie diese

type week amount 
    a 201304 71 
    a 201305 77 

sollten Sie danken für Sie

+1

Zusammen mit dem Problem sollten Sie ** umfassen den Code, den Sie bis zu diesem Punkt haben bis ** (* einige Mühe machen zu beantworten Ihre Problem/Frage *). Bitte fügen Sie auch ein spezifisches Problem oder einen Fehler und den kürzesten Code ein, der notwendig ist, um es in der Frage selbst zu reproduzieren. Siehe: [Minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) und lesen Sie auch [Wie stelle ich eine gute Frage?] (Http://stackoverflow.com/help/how-to -Fragen). – Igor

Antwort

2

Was ist los mit dieser regelmäßigen GROUP BY?

SELECT type, week, MIN(amount) amount 
FROM table_name 
GROUP BY type, week 

EDIT

Wenn Sie verschiedene Arten in der gleichen Woche mit der gleichen Menge haben, was wollen Sie tun? Wenn Sie wissen wollen, welche Art hat die MIN (Menge) in einer Woche:

SELECT DISTINCT t2.* 
FROM 
(SELECT week, MIN(amount) amount 
    FROM table_name 
    GROUP BY week) t1 
    JOIN table_name t2 ON t1.amount = t2. amount AND t1.week = t2.week 
0

Sie helfen, eine min und in Klausel

verwenden können Versuchen
select * from my_table 
where (amount, week) in (
    select min(amount), week from my_table group by week 
); 
1

Select type, week, amount 
from 
    (Select type, week, amount, row_number() over(partition by week, amount order by amount asc) as rownumber 
    from table_name) 
where rownumber = 1 

Was das bedeutet ist assign Zeilennummern auf Ihrer Partition nur Woche und Menge. Sie können viele Beträge pro Woche haben. Diese nummeriert sie und sortiert sie so, dass die Kleinste oben steht (Reihe 1). Sie erhalten genau diese Zeile in der WHERE-Klausel. Dies ergibt eine Mindestmenge pro Woche, unabhängig vom Typ.

+0

Sie können in der where-Klausel keine Zeilennummer verwenden, da SQL den Alias ​​zum Zeitpunkt der Berechnung der Ergebnismenge nicht versteht. Fensterfunktionen können auch nicht in der where-Klausel verwendet werden. Sie können jedoch wählen Sie aus Ihrer Auswahl als Unterauswahl oder gemeinsame Tabelle Ausdruck – Matt

+0

@Matt danke für die Anleitung. Ich habe meine Antwort bearbeitet. Bitte lassen Sie mich wissen, wenn etwas inkorrekt bleibt. –

Verwandte Themen