Подтвердить что ты не робот

Как GROUP и выбрать самое низкое значение в SQL

У меня есть таблица, состоящая из этих полей:

 id  |   date_from  | date_to      |   price
 --------------------------------------------
 CK1     22-12-2012   29-12-2012       800
 CK1     22-12-2012   29-12-2012       1200
 CK2     22-12-2012   29-12-2012       1400
 CK2     22-12-2012   29-12-2012       1800
 CK2     22-12-2012   29-12-2012       2200

Как я могу создать SQL, выберите группы, результаты по ID, DATE_FROM, DATE_TO, и выберем самое низкое значение из цены.

Таким образом, результат будет

 CK1     22-12-2012   29-12-2012       800
 CK2     22-12-2012   29-12-2012       1400
4b9b3361

Ответ 1

select id, date_from, date_to, min(price)
from table
group by id, date_from, date_to

Ответ 2

Вот так:

SELECT id, date_from, date_to, MIN(price)
FROM TableName
GROUP BY id, date_from, date_to

Ответ 3

Если ваш dbms поддерживает cte, вы можете сделать это следующим образом:

Данные тестирования

DECLARE @tbl TABLE
(
    id VARCHAR(100),
    date_from VARCHAR(100),
    date_to VARCHAR(100),
    price INT
)

INSERT INTO @tbl
VALUES
    ('CK1','22-12-2012','29-12-2012',800),
    ('CK1','22-12-2012','29-12-2012',1200),
    ('CK2','22-12-2012','29-12-2012',1400),
    ('CK2','22-12-2012','29-12-2012',1800),
    ('CK2','22-12-2012','29-12-2012',2200)

Query

;WITH CTE
AS
(   
    SELECT
        RANK() OVER(PARTITION BY id ORDER BY price ASC) AS RowNbr,
        tbl.*
    FROM
        @tbl AS tbl
)
SELECT
    *
FROM
    CTE
WHERE
    CTE.RowNbr=1

Ответ 4

SELECT id, date_from, date_to, min(price)
FROM my_table
GROUP BY id, date_from, date_to

Ответ 5

Я замечаю, что в приведенных выше ответах есть связанные данные с min (цена).

Всякий раз, когда ive пыталась использовать функцию min со связанными данными, возможно, что данные будут неверными. например:

SELECT funder, customer,  min(sq.rate) 'Highest Average Rate', max(sq.rate) 'Highest Average Rate'
FROM tbl_x 
group by funder, customer
order by rate desc

дает

"funder"    "customer"  "HighestRate"         "Highest Rate"
"1"         "john"           "14.50"             "14.50"
"2"         "matt"           "13.00"             "13.00"

как вы можете видеть, значения min и max одинаковы.

Я уверен, что где-то может быть какая-то работа, но это просто голова