2016-07-08 12 views
0

Im berechnen versucht, den Modus (den Wert, der in einer Reihe von Daten am häufigsten angezeigt wird) zu erhaltenmysql - Wie Modus mehrmals in einer Tabelle

create table t_products (
store_id int, 
product varchar(20), 
price int 
) 

ich für jedes Geschäft in der folgenden Tabelle der Preis haben Sie bereits diese Abfrage, die alle Vorkommen jedes Preises in jedem Geschäft abruft

SELECT store_id, price, count(price) 
FROM t_products 
GROUP BY store_id, price 
ORDER BY count(price) DESC; 

Was sonst noch fehlt? Ich habe versucht, Max() -Funktion zu verwenden, um den höchsten Preis für jedes Geschäft auf mehrere Arten ohne Erfolg zu erhalten.

Vielen Dank im Voraus
PD Dies ist das Ergebnis meiner aktuellen Abfrage.

store_id|price|count(price) 
2   40  5 
1   70  5 
2   90  4 
3   60  2 
1   60  1 
3   50  1 
3   80  1 
1   50  1 

ich nur

store price 
    2  40 
    1  70 
    3  60 

Antwort

1
select tmp.store_id, tmp.price from (
    SELECT store_id, price 
    FROM t_products 
    GROUP BY store_id, price 
    ORDER BY count(price) DESC 
) as tmp 
group by tmp.store_id 

Viel Glück)

1
SELECT store_id, value 
FROM (SELECT store_id, value, count(value) c 
     FROM t_products 
     GROUP BY store_id, value 
     ORDER BY count(value) DESC) ds 
GROUP BY store_id 
HAVING max(ds.c); 
behalten möchten