Max суммы в SQL

Вы можете использовать атрибут в своем HTML, а не использовать JS.

В этом случае существуют разные способы решения проблемы.

  • Использование разных изображений для экранов разных размеров с srcset :

В этом случае это будет просто классический адаптивный стиль.


  • Использование одиночного высококачественного изображения

Здесь мы также даем браузеру изображение по умолчанию, а затем он автоматически определяет, какое из них взять в зависимости от размера экрана. 118]


8
задан 4 November 2008 в 00:05
поделиться

7 ответов

Это работает в SQL-сервере (2000 и выше наверняка)

SELECT a.Store, a.Department, a.Sales
FROM temp a
INNER JOIN 
(SELECT store, max(sales) as sales
FROM temp
GROUP BY Store) b
ON a.Store = b.Store AND a.Sales = b.Sales;
4
ответ дан 5 December 2019 в 19:04
поделиться

Это работает в Oracle, другие реализации могут иметь другой синтаксис для аналитических функций (или испытать недостаток в них полностью):

select store
     , max(department) keep(dense_rank last order by sales)
     , max(sales)
  from (
        ...query that generates your results...
       )
 group by store
2
ответ дан 5 December 2019 в 19:04
поделиться

Мои 2 решения для SQL 2005 ниже. Другие, которые я вижу до сих пор, не могут возвратить корректные данные, если два из объемов продаж являются тем же. Это зависит от Ваших потребностей все же.

Первое использование Row_Number () функция, все строки оцениваются от самого низкого до самых высоких продаж (затем некоторые правила нарушающего связи). Затем самый высокий разряд выбран на хранилище для получения результата.

Можно попытаться добавить Partion пунктом к функции Row_Number (см. BOL), и/или исследуйте использование внутреннего объединения вместо "в" пункте.

Второе, одалживая на идее Тюремщика, снова оценивает их, но разделы хранилищем, таким образом, мы можем выбрать первый оцениваемый. Dense_Rank возможно даст двум идентичным строкам тот же разряд, поэтому если бы хранилище и отдел не были уникальны, то он мог бы возвратить две строки. С Row_number число уникально в разделе.

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

Другие запросы выбор макс. продажи на хранилище и возврат данные тот путь, возвратите дублирующиеся строки для хранилища, если два отдела, оказывается, имеют те же продажи. Последний запрос показывает это.

DECLARE @tbl as TABLE (store varchar(20), department varchar(20), sales int)

INSERT INTO @tbl VALUES ('Toronto', 'Baskets', 500)
INSERT INTO @tbl VALUES ('Toronto', 'Noodles', 500)
INSERT INTO @tbl VALUES ('Toronto', 'Fish', 300)
INSERT INTO @tbl VALUES ('Halifax', 'Fish', 300)
INSERT INTO @tbl VALUES ('Halifax', 'Baskets', 200)

-- Expect Toronto/Noodles/500 and Halifax/Fish/300

;WITH ranked AS -- Rank the rows by sales from 1 to x
(
    SELECT 
        ROW_NUMBER() OVER (ORDER BY sales, store, department) as 'rank', 
        store, department, sales
    FROM @tbl
)

SELECT store, department, sales
FROM ranked
WHERE rank in (
    SELECT max(rank) -- chose the highest ranked per store
    FROM ranked
    GROUP BY store
)

-- Another way
SELECT store, department, sales
FROM (
    SELECT 
        DENSE_RANK() OVER (PARTITION BY store ORDER BY sales desc, 
store desc, department desc) as 'rank',
        store, department, sales
    FROM @tbl
) tbl
WHERE rank = 1


-- This will bring back 2 rows for Toronto
select tbl.store, department, sales
from @tbl tbl
    join (
        select store, max(sales) as maxSales from @tbl group by store
    ) tempTable on tempTable.store = tbl.store 
           and tempTable.maxSales = tbl.sales
2
ответ дан 5 December 2019 в 19:04
поделиться

Это будет работать в SQL Server, по состоянию на 2005:

with data as
(select store, department, sales
from <your query>),
 maxsales as
(select store,  sales = max(sales)
from data
group by store)
select store, (select top 1 department from data where store = t.store and sales = t.sales order by [your criteria for ties]), sales
from maxsales m

Я предполагаю, что Вы только хотите отобразить 1 отдел в случае связей, следовательно лучший 1 и [Ваши критерии связей] для различения их.

1
ответ дан 5 December 2019 в 19:04
поделиться

Это будет работать

Select Store, Department, Sales
From yourTable A
Where Sales = (Select Max(Sales)
               From YourTable
               Where Store = A.Store)
0
ответ дан 5 December 2019 в 19:04
поделиться

Это будет работать в SQL Server без временных таблиц:

SELECT Store, Department, Sales FROM
(SELECT Store, Department, Sales,
DENSE_RANK()  OVER (PARTITION BY Store
ORDER BY Sales DESC) AS Dense_Rank
FROM Sales) A WHERE Dense_Rank = 1

ГДЕ "Продажи" = Ваш исходный запрос

0
ответ дан 5 December 2019 в 19:04
поделиться

Возможно, это могло работать. Не попробовали его хотя, могло быть лучшее решение...

select yourTable.store, dept, sales
from yourTable
join (
  select store, max(sales) as maxSales from yourTable group by store
) tempTable on tempTable.store = yourTable.store 
           and tempTable.maxSales = yourTable.sales
0
ответ дан 5 December 2019 в 19:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: