sql >> Database teknologi >  >> RDS >> Oracle

SQL-forespørgsel, gennemsnitsstigning og par, der har besteget flest toppe

Spørgsmål 1:For det samlede antal ture (inklusive hver gang en top blev besteget)

SELECT t1.sex, AVG(t1.peak_count) AS average FROM (SELECT sex, COUNT(trip_id) AS peak_count FROM climber c LEFT JOIN participated p ON c.name = p.name GROUP BY c.name, c.sex) t1

For hver gang en UNIK top blev besteget:

SELECT t1.sex, AVG(t1.peak_count) AS average FROM (SELECT sex, COUNT(trip_id) AS peak_count FROM climber c LEFT JOIN participated p ON c.name = p.name GROUP BY c.name, c.sex) t1

Spørgsmål 2:

SELECT P1.Name, P2.Name, COUNT(DISTINCT p1.trip_id) AS trips
FROM participated p1 INNER JOIN  participated p2 ON p1.trip_id = p2.trip_id
WHERE p1.name > p2.name -- > instead of <> gets only one of the pairs
GROUP BY P1.Name, P2.Name 
HAVING COUNT(DISTINCT p1.trip_id) > 0
ORDER BY trips DESC
 

Spørgsmål 3:

SELECT p.name, cl.when AS span_begin_date, DATEADD(day, 60, cl.when) AS span_end_date, count(c2.trip_id) AS peaks
FROM climbed cl LEFT JOIN 
climbed c2 ON c2.when BETWEEN cl.when AND DATEADD(day, 60, cl.when)
GROUP BY p.name, cl.when, DATEADD(day, 60, cl.when)
HAVING COUNT(c2.trip_id) > 20
ORDER BY peaks
 


  1. MySQL, hvordan man indsætter null-datoer

  2. Fuldtekstsøgning siden PostgreSQL 8.3

  3. rake db:structure:dump fejler under PostgreSQL / Rails 3.2

  4. Docker MYSQL '[2002] forbindelse nægtet'