mysql использует сумму и максимум, чтобы найти самый высокооплачиваемый счет - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь выяснить, как получить МАКСИМАЛЬНЫЙ результат СУММЫ значений из таблицы, чтобы отобразить наибольшую оплаченную сумму квитанции. Я также должен использовать отбор, но я запутался. Пока этот запрос дает мне все, что мне нужно, кроме максимального значения. Это таблица (накладная + OD) должна использоваться Это то, что я сейчас получаю Это то, что я должен получить

где я могу добавить MAX () (от суммы)?

SELECT invoicenumber invoice
     , invoicedate date
     , SUM(orderqty*ordersell) AS 'Invoice Total' 
  FROM invoice 
  JOIN orderdetail 
    ON invoice.invoiceid = orderdetail.invoiceid 
 GROUP 
    BY invoice ;

Ответы [ 3 ]

0 голосов
/ 08 ноября 2018

Вы можете попробовать это (добавив к предыдущему ответу):

SELECT invoicenumber AS invoice
 , invoicedate AS date
 , SUM(orderqty*ordersell) AS 'Invoice Total' 
FROM invoice 
JOIN orderdetail ON invoice.invoiceid = orderdetail.invoiceid 
GROUP BY invoicenumber,invoicedate ORDER BY `Invoice Total` DESC LIMIT 1;

Может быть не слишком эффективным, но возвращает только самый высокий результат.

0 голосов
/ 08 ноября 2018

Я не знаю, близко ли это к тому, что вы искали, но я думаю, что это сработает (если я правильно понял, чего вы пытаетесь достичь).

SELECT inv.invoicenumber,
       inv.invoice, 
       inv.invoicedate AS 'Date',
       MAX((SELECT ord.orderqty+ord.ordersell FROM DUAL)) AS 'Invoice Total' 
  FROM invoice inv
  JOIN orderdetail ord
    ON inv.invoice.invoiceid = ord.orderdetail.invoiceid 
 GROUP BY inv.invoice, 
          inv.invoice, 
          inv.invoicedate;
0 голосов
/ 08 ноября 2018

Если вы используете SUM или MAX в SELECT, вам нужно сгруппировать другие столбцы:

SELECT invoicenumber AS invoice
 , invoicedate AS date
 , SUM(orderqty*ordersell) AS 'Invoice Total' 
FROM invoice 
JOIN orderdetail ON invoice.invoiceid = orderdetail.invoiceid 
GROUP BY invoicenumber,invoicedate;
...