sql interogare rânduri conta pe id prin selectarea optiunii interval între 2 zile min în diferite coloane

voturi
-1
       temp
|id|received  |changed   |
|33|2019-02-18|2019-11-18|
|33|2019-08-02|2019-09-18|
|33|2019-12-27|2019-12-18|
|18|2019-07-14|2019-10-18|
|50|2019-03-20|2019-05-26|
|50|2019-01-19|2019-06-26|

Utilizatorii „temp“ afișează masă care au primit o cerere pentru o activitate. Un utilizator poate face mai multe cereri. Prin urmare, coloana a primit are mai multe date care arată când a fost primit cererile. Arată tabelul „schimbat“, atunci când sa modificat statutul. Există, de asemenea, mai multe valori pentru ea. Necesitatea de a găsi COUNT de cereri pentru fiecare utilizator, între data MIN (primite) și MIN (modificat) Rezultatul data de așteptat, ar trebui să arate astfel: - Al treilea rând de ID- 33 nu ar trebui să fie selectate, deoarece data primirii este după schimbat Data.

|id|total_requests_sent|
|33|2                  |
|18|1                  |
|50|2                  |


A încercat Crearea 2 lui pentru ambele valori CTE dată MIN și unit cu cel original

Întrebat 14/02/2020 la 00:03
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
1

S-ar putea fi într-adevăr supra-simplificarea sarcina, dar nu ar fi ceva de genul asta?

select
  t.id, count (*) as total_requests_sent
from
  temp t
  join temp2 t2 on
    t.id = t2.id
where
  t.received between t2.min_received and t2.min_changed
group by
  t.id

Cred că producția se va potrivi cu exemplul dvs. pe caz de utilizare ați menționat, dar cu un set de date limitat este greu pentru a fi sigur.

Publicat 14/02/2020 la 02:28
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more