Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách lấy tổng trong bảng đã nối khi sử dụng nhóm bằng cách - nhận kết quả sai

Tôi hiểu rằng bạn muốn, cho mỗi ngày:

  • tổng của order_items.energy_used cho tất cả các đơn đặt hàng được tạo vào ngày hôm đó
  • created_atorder_sum tương ứng với order mới nhất được tạo vào ngày đó

Dữ liệu mẫu của bạn không đại diện cho điều đó - nó chỉ có một đơn đặt hàng mỗi ngày. Ngoài ra, không rõ tại sao created_at được lặp lại trong cả hai bảng; bạn thực sự nên dựa vào order_id liên quan đến cả hai bảng

Đây là một truy vấn cho mục đích trên:điều này hoạt động bằng cách tham gia các order bảng có truy vấn tổng hợp tính tổng năng lượng mỗi ngày (sử dụng order_id để lấy created_at ngày kể từ order ), và lọc theo đơn đặt hàng mới nhất mỗi ngày:

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)
)

Bản trình diễn trên DB Fiddle :

date_of_month | total_energy_used | last_order_date     | last_order_sum
:------------ | ----------------: | :------------------ | -------------:
2020-01-25    |                77 | 2020-01-25 09:13:00 |          25.13
2020-01-26    |                75 | 2020-01-26 10:14:00 |          14.00
2020-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. PDO Nhận nhiều Id Chèn

  2. Datetime NOW PHP mysql (biến thể + PDO)

  3. CHỈ SỐ SPATIAL là gì và khi nào tôi nên sử dụng nó?

  4. Truy vấn MySQL IN chậm khủng khiếp với truy vấn con nhưng nhanh với các giá trị rõ ràng

  5. LEFT JOIN không hoạt động như mong đợi như cung cấp NULL trong MySQL