SQL Проблемы с форматированием запросов - PullRequest
0 голосов
/ 26 апреля 2020

Пытается выяснить правильное форматирование для моего sql запроса.

SELECT
r.rental_id,
r.rental_date,
r.return_date,
r.inventory_id,
i.inventory_id,
i.film_id,
f.film_id,
f.rental_duration,
DATEDIFF(
    days,
    r.rental_date,
    r.return_date
) AS days_out,
SUM(CASE WHEN r.return_date = NULL) as 'Not_Returned',
SUM(CASE WHEN days_out > cc.rental_duration) as 'Returned_Late',
SUM(CASE WHEN days_out =< cc.rental_duration) as 'Returned on Time',
COUNT(r.rental_id) AS 'Total Rentals'
FROM rental AS r, inventory as i, film as f
WHERE r.inventory_id = i.inventory_id and i.film_id = f.film_id 

Я пытаюсь получить общее количество арендных плат, возвращаемых с опозданием или в срок. Любая помощь и советы будут с благодарностью. Мой главный вопрос - как правильно отформатировать мои операторы суммирования и когда использовать операцию SUM или COUNT. Результирующая таблица должна иметь «Возвращено вовремя», «Возвращено поздно», «Не возвращено» и «Всего арендных платежей» с одной записью каждая.

1 Ответ

0 голосов
/ 26 апреля 2020

Использование вами дела сбивает с толку. Ниже приведен простой пример.

SELECT   ProductNumber, Name, "Price Range" =   
      CASE   
         WHEN ListPrice =  0 THEN 'Mfg item - not for resale'  
         WHEN ListPrice < 50 THEN 'Under $50'  
         WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'  
         WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'  
         ELSE 'Over $1000'  
      END  
FROM Production.Product 

Функция SQL Server SUM () - это агрегатная функция, которая вычисляет сумму всех или отдельных значений в выражении.

Зная это, не могли бы вы попытаться повторно напиши свою функцию.

...