2016-07-21 5 views
0

Я имею эту таблицу данных ниже, я вытягивать из базы данныхМинимального значения столбца, соответствующего другого значение столбца

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 

Я пытаюсь тянуть только минимальное значение из amount столбца на каждой неделю только, так что таблица должна быть, как это

type week amount 
    a 201304 71 
    a 201305 77 

Спасибо вам помочь

+1

Наряду с проблемой следует ** включать код, который вы не имеете до этого момента ** (* приложить некоторые усилия, чтобы ответить на ваши проблема/вопрос *). Также укажите конкретную проблему или ошибку и кратчайший код, необходимый для воспроизведения в самом вопросе. См. [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve), а также прочитайте [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to -просить). – Igor

ответ

2

Что не так с этим регулярным номером GROUP BY?

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

EDIT

Если у вас есть различные типы в той же неделе с таким же количеством, что вы хотите сделать? Если вы хотите знать, какой тип имеет MIN (количество) в неделю:

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

вы можете использовать мин и в пункте

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 

Что это делает присвоение номера строк на ваш раздел только неделю и количества. У вас может быть много сумм в неделю. Это их номера, и вы сортируете их так, чтобы наименьшее было сверху (строка 1). Вы получаете только эту строку в предложении where. Это приведет к минимальной сумме за неделю независимо от типа.

+0

вы не можете использовать rownumber в предложении where, поскольку SQL не будет понимать псевдоним в момент вычисления результирующего набора. Кроме того, функции окна не могут использоваться в том же предложении. тем не менее, вы можете выбрать из своего выбора в качестве вспомогательного выбора или общего выражения таблицы – Matt

+0

@Matt спасибо за руководство. Я отредактировал свой ответ. Пожалуйста, дайте мне знать, если что-то не так. –

Смежные вопросы

 Смежные вопросы