Следующий запрос SQL, который отображает проданные товары, отсортированные по стоимости и количеству заказов, должен быть отсортирован по разделам. А именно, продукты со стоимостью менее 100 долларов должны идти в первую очередь, а затем все остальные, которые стоят> 100 долларов, должны следовать за ним. Добавление HAVING TS.TotalSold < 100
к запросу позволит выполнить это для первого раздела, но отфильтрует другие продукты. Операция должна быть атомарной, чтобы этот запрос мог быть выполнен только один раз.
ПРИМЕЧАНИЕ: стоимость, на которую должен быть разделен запрос, рассчитывается как максимум из двух столбцов стоимости, что несколько усложняет ситуацию (предлагаемые решения CASE WHEN не будут работать, так как HighestCost не является столбцом)
SELECT PS.ProductName, TS.TotalSold,
((PS.Cost1 + PS.Cost2 + ABS(PS.Cost1-PS.Cost2)) / 2) as HighestCost
FROM Products as PS
CROSS APPLY
(SELECT
(SELECT COUNT(OrderId)
FROM Orders as OS
WHERE OS.ProductId=PS.ProductId)
as TotalSold) TS
ORDER BY HighestCost ASC, TS.TotalSold
РЕДАКТИРОВАТЬ : изменил запрос, включив в него вычисленную стоимость, на которую должен быть разбит запрос.