Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да получите сумата в обединена таблица, когато използвате групиране по - получаване на грешни резултати

Разбирам, че искате за всеки ден:

  • сумата от order_items.energy_used за всички поръчки, създадени този ден
  • created_at и order_sum които съответстват на последната order създаден на този ден

Вашите примерни данни не са много представителни за това - има само една поръчка на ден. Също така не е ясно защо created_at се повтаря и в двете таблици; наистина трябва да разчитате на order_id за свързване на двете таблици

Ето заявка за горната цел:това работи чрез присъединяване към orders таблица с обобщена заявка, която изчислява общата енергия на ден (използвайки order_id за да получите created_at дата от orders ) и филтрира по последната поръчка на ден:

select 
    date(o.created_at) date_of_month,
    i.total_energy_used,
    o.created_at last_order_date,
    o.order_sum last_order_sum
from orders o
inner join (
    select date(o1.created_at) date_of_month, sum(i1.energy_used) total_energy_used
    from orders o1
    inner join order_items i1 on o1.id = i1.order_id
    group by date(o1.created_at)
) i on i.date_of_month = date(o.created_at)
where o.created_at = (
    select max(o1.created_at)
    from orders o1
    where date(o1.created_at) = date(o.created_at)
)
 

Демо на DB Fiddle :

<преди>дата_на_месец | обща_използвана_енергия | дата на последна_поръчка | последна_сума_на_поръчка:------------ | ----------------:| :------------------ | -------------:2020-01-25 | 77 | 2020-01-25 09:13:00 | 25.132020-01-26 | 75 | 2020-01-26 10:14:00 | 14.002020-01-27 | 0 | 2020-01-27 11:13:00 | 35.00

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изходен параметър на MySQL съхранени процедури чрез ADODB в MS Access (VBA) правилен на един компютър и случаен на друг

  2. Как да разрешим дилемата за съхраняване на човешки имена в MySQL и да запазим както разграничаването, така и търсенето на подобни имена?

  3. MySQL Преименуване на колона

  4. mysql - създаване на механизъм, подобен на последователностите на Oracle

  5. Изберете продукти по множество атрибути, като използвате И вместо ИЛИ конкатенатор, модел на данни EAV