Finde die Position eines resultes nach dem COUNT

Th3RaZe

Aktiver Benutzer
Beiträge
37
Guten Tag,

Aktuell lasse ich mir die besten 3 Ergebnisse ausgeben die innerhalb von 7 Tagen erstellt wurden. Jetzt will ich die Position herausfinden einer Stadt nachdem der Count fertig ist. z.B. Berlin ist mein Ausgangspunkt und ich will wissen auf welchen platz beim Count Berlin ist, wie mache ich das? SET counter; kann ich nicht verwenden, weil es nur eine Abfrage beinhalten Darf.

DB = MySQL

relevanten Spalten= timestamp, city

Aktuelle Abfrage:

Code:
SELECT city ,COUNT(city) FROM content WHERE create2 > DATE_SUB( NOW(), INTERVAL 7 DAY)   GROUP BY city ORDER BY COUNT(city) DESC LIMIT 3
 
Werbung:
Nein das meinte ich nicht ^^, aber ich habe da jetzt was gefunden für MySql, aber ich weiß nicht wie ich jetzt damit die Row_Number Selecte um die Row_Number zu finden die city= Berlin ist.

Code:
SELECT @rownum:=@rownum + 1 as row_number,
       t.*
FROM (
   SELECT city ,COUNT(city) FROM content WHERE create2 > DATE_SUB( NOW(), INTERVAL 7 DAY)   GROUP BY city ORDER BY COUNT(city) DESC
) t,
(SELECT @rownum := 0) r
 
Du wirst das in einem Subselect machen müssen.

Code:
test=*# create table demo (id int);
CREATE TABLE
test=*# insert into demo select (random()*10)::int from generate_series(1, 20) s;
INSERT 0 20
test=*# select * from demo;
 id
----
  9
  0
  3
  4
  1
  3
 10
  5
  0
  4
  4
  6
  9
  0
  5
  3
  9
  1
  5
  4
(20 rows)
test=*# with tmp as (select id, count(1) as c from demo group by id) select id, c, row_number() over (order by c), rank() over (order by c), dense_rank() over (order by c) from tmp order by c;
 id | c | row_number | rank | dense_rank
----+---+------------+------+------------
  6 | 1 |  1 |  1 |  1
 10 | 1 |  2 |  1 |  1
  1 | 2 |  3 |  3 |  2
  9 | 3 |  4 |  4 |  3
  0 | 3 |  5 |  4 |  3
  5 | 3 |  6 |  4 |  3
  3 | 3 |  7 |  4 |  3
  4 | 4 |  8 |  8 |  4
(8 rows)
 
Werbung:
Hab es, nach Stundenlangem Googlen.

Code:
select * From ( SELECT @i:=@i+1 AS rank, t.city FROM content AS t, (SELECT @i:=0) AS tbl WHERE create2 > DATE_SUB( NOW(), INTERVAL 7 DAY) GROUP BY city ORDER BY COUNT(city) DESC) x where city = Berlin
 
Zurück
Oben