Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Mam problem podczas jednoczesnego używania lewego łączenia i grupowania. Mam wiele wierszy danych z tym samym identyfikatorem użytkownika, więc chcę użyć group by

Musisz też pogrupować według licznika.

  create table call_log (
  user_id int(10), 
  duration int(10)      );

  insert into call_log values ( 5019,12),
                              ( 2345,23),
                              ( 5019,14);

  create table job_timetable  (
              user_id int(10), 
               counter int(10) );

  insert into job_timetable values ( 5019,1),
                                   ( 5019,3),
                                   ( 2345,2);


  SELECT call_log.user_id,SUM(call_log.duration) as duration,
                    avg(call_log.duration) as average_duration,
                                                    countersum
    FROM call_log 
    LEFT JOIN ( SELECT user_id,sum(counter) as countersum FROM job_timetable 
    GROUP BY user_id )  b   on call_log.user_id= b.user_id
    where call_log.user_id is not null 
    group by call_log.user_id,countersum 
    order by  call_log.user_id asc;

Demo:https://www.db-fiddle.com/f/7yUJcuMJPncBBnrExKbzYz/77



  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 NOT IN Query znacznie wolniej po aktualizacji Mysql

  2. Laravel 4 Relacje elokwentne/modelowe

  3. Wydrukuj tabelę php za pomocą funkcji drukowania za pomocą drukarki

  4. $this->db->insert_id(); zwraca 0 za każdym razem w codeigniter

  5. Wybierz największą liczbę z tabeli MYSQL z dodanym Prefiksem