SQL-запрос, который может быть вопросом подзапроса или внутренним соединением - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть домашнее задание, которое спрашивает:

"Для каждого клиента, чья общая сумма продаж превышает 250 долларов США, укажите идентификатор клиента, имя клиента и общую сумму продаж клиента. Дайте описательные имена для всехвычисленные поля. "

Обычно я никогда не приходил в SO за домашними заданиями, так как я просто пробирался и разбирался, но этот, кажется, застрял.

Это мой неправильный запрос на вопрос:

    SELECT customerid
    FROM customer
    WHERE customerid In (SELECT sum(untipricesold) AS totalSales 
    FROM orderline WHERE sum(orderline.unitpricesold) > 250)
    GROUP by customerid;

Результат, который я получил: "Групповая функция здесь не разрешена".

Я прикрепил скриншотсоответствующих таблиц, которые ДОЛЖНЫ использоваться для этого вопроса.Опять же, это не то, чем я обычно занимаюсь, и я полностью против мошенничества в школе, но, пожалуйста, помогите.

enter image description here

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Вам нужно предложение HAVING, когда вы пришли с фильтрацией после агрегации или нащупывания:

Итак, я бы склонялся к JOIN:

SELECT c.customerid , c.customername, o.TotalSales  
FROM customer c INNER JOIN
     (SELECT customerid, SUM(untipricesold) AS TotalSales  
      FROM orderline O
      GROUP by customerid 
      HAVING SUM(untipricesold) > 250
     ) o
     ON o.customerid = c.customerid; 
0 голосов
/ 25 сентября 2018

Вам нужно предложение HAVING.Кроме того, вы, вероятно, хотите выбрать customerid в подзапросе, а не сумму, поскольку вы сравниваете с customerid во внешнем запросе.

SELECT customerid
FROM customer
WHERE customerid IN (SELECT customerid FROM orderline
                     GROUP by customerid HAVING SUM(untipricesold) > 250);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...