sql >> Databasteknik >  >> RDS >> Mysql

MySQL-fråga för att få bästsäljande produkter

Det är viktigt att få toppsäljande produkter om du driver en webbutik eller e-handelsverksamhet. Eftersom de flesta onlinewebbplatser körs på MySQL kommer vi i den här artikeln att titta på MySQL Query för att få bästsäljande produkter för ditt företag. Det är väldigt användbart för att förstå vilka produkter som fungerar bra och vilka som behöver en push. Du kan använda dessa frågor för att få mest sålda produkter eller få en lista över bästsäljande varor på din webbplats.


MySQL-fråga för att få bästsäljande produkter

Vi kommer att titta på två fall – först när din produktinformation och försäljningsinformation finns i samma tabell. För det andra, när din produkt- och försäljningsinformation finns i olika tabeller.


Hur får du bästsäljande produkter

Låt oss säga att du har en tabell försäljning(id, produkt, orderdatum, belopp) som innehåller information om produkt och försäljningsbelopp i en enda tabell.

mysql> create table sales(id int, 
        product varchar(10), 
        order_date date, 
        amount int);

mysql> insert into sales(id, product, order_date, amount)
       values(1, 'Bike','2021-01-01',150),
       (2, 'Car','2021-01-01',450),
       (3, 'Bicycle','2021-01-02',50),
       (5, 'Car','2021-01-02',450),
       (6, 'Bike','2021-01-03',150),
       (7, 'SUV','2021-01-04',850),
       (8, 'Bike','2021-01-04',150);

mysql> select * from sales;
+------+---------+------------+--------+
| id   | product | order_date | amount |
+------+---------+------------+--------+
|    1 | Bike    | 2021-01-01 |    150 |
|    2 | Car     | 2021-01-01 |    450 |
|    3 | Bicycle | 2021-01-02 |     50 |
|    5 | Car     | 2021-01-02 |    450 |
|    6 | Bike    | 2021-01-03 |    150 |
|    7 | SUV     | 2021-01-04 |    850 |
|    8 | Bike    | 2021-01-04 |    150 |
+------+---------+------------+--------+

Vi kommer att få bästsäljande produkter efter försäljning och volym.

Bonus Läs:Hur man får flera räkningar i MySQL


Bästsäljande produkter efter total försäljning

Här är SQL-frågan för att få bästsäljande produkter efter total försäljning. I vårt fall kommer vi att välja topp 3 bästsäljande produkter efter totalt försäljningsbelopp.

mysql> select product, sum(amount) 
       from sales 
       group by product 
       order by sum(amount) desc 
       limit 3;
 +---------+-------------+
 | product | sum(amount) |
 +---------+-------------+
 | Car     |         900 |
 | SUV     |         850 |
 | Bike    |         450 |
 +---------+-------------+

Låt oss titta på ovanstående fråga i detalj. Vi GRUPPERAR PER produkt kolumn och sammanlagt belopp kolumn med SUM-funktionen.

Vi BESTÄLLER vidare PER summa(belopp) i fallande ordning så att de mest sålda produkterna listas överst. Vi använder också LIMIT 3-satsen för att bara välja de tre översta raderna med resultat.


Bästsäljande produkter efter total volym

Här är SQL-frågan för att få bästsäljande produkter efter total volym, det vill säga antalet försäljningar.

mysql> select product, count(amount) 
       from sales 
       group by product 
       order by count(amount) 
       desc limit 3;
 +---------+---------------+
 | product | count(amount) |
 +---------+---------------+
 | Bike    |             3 |
 | Car     |             2 |
 | Bicycle |             1 |
 +---------+---------------+


Nu ska vi titta på det andra fallet. Ibland finns produkt- och försäljningsinformation i olika tabeller.

Låt oss säga att du har två tabeller produkt(id, produktnamn) och försäljning(id, produkt-id, orderdatum, belopp)

mysql> create table product(id int,product_name varchar(10));

mysql> insert into product(id, product_name)
      value(1,'Bike'),
      (2,'Car'),
      (3,'Bicycle'),
      (4,'SUV');

mysql> select * from product;
 +------+--------------+
 | id   | product_name |
 +------+--------------+
 |    1 | Bike         |
 |    2 | Car          |
 |    3 | Bicycle      |
 |    4 | SUV          |
 +------+--------------+

mysql> create table sales(id int, 
      product_id int, 
      order_date date, 
      amount int);

mysql> insert into sales(id, product_id, order_date, amount)
      values(1, 1,'2021-01-01',150),
      (2, 2,'2021-01-01',450),
      (3, 3,'2021-01-02',50),
      (5, 2,'2021-01-02',450),
      (6, 1,'2021-01-03',150),
      (7, 4,'2021-01-04',850),
      (8, 1,'2021-01-04',150);

mysql> select * from sales;
 +------+------------+------------+--------+
 | id   | product_id | order_date | amount |
 +------+------------+------------+--------+
 |    1 |          1 | 2021-01-01 |    150 |
 |    2 |          2 | 2021-01-01 |    450 |
 |    3 |          3 | 2021-01-02 |     50 |
 |    5 |          2 | 2021-01-02 |    450 |
 |    6 |          1 | 2021-01-03 |    150 |
 |    7 |          4 | 2021-01-04 |    850 |
 |    8 |          1 | 2021-01-04 |    150 |
 +------+------------+------------+--------+

Bonus Läs:Hur man använder COALESCE i MySQL


Bästsäljande produkter efter total försäljning

Här är SQL-frågan för att få bästsäljande produkter efter total försäljning. Vi kommer i princip att slå samman de två tabellerna för att få produktnamn och total försäljning i frågeresultat.

mysql> select product_name, sum(amount)
           from sales,product
           where sales.product_id=product.id
           group by product_name
           order by sum(amount) desc
           limit 3;
 +--------------+-------------+
 | product_name | sum(amount) |
 +--------------+-------------+
 | Car          |         900 |
 | SUV          |         850 |
 | Bike         |         450 |
 +--------------+-------------+

Låt oss titta på ovanstående fråga i detalj. Vi VÄLJER produktnamn och sum(amount) kolumner från produkt och försäljning tabeller. Vi sammanfogar de två tabellerna med product_id kolumn från försäljning tabell och id kolumn från produkt tabell, GROUP BY produkt kolumn och sammanlagt belopp kolumn med SUM-funktionen.

Vi BESTÄLLER vidare PER summa(belopp) i fallande ordning så att de mest sålda produkterna listas överst. Vi använder också LIMIT 3-satsen för att bara välja de tre översta raderna med resultat.

Bonus Läs:Hur man frågar JSON-kolumnen i MySQL


Bästsäljande produkter efter total volym

Här är SQL-frågan för att få bästsäljande produkter efter total volym, det vill säga antalet försäljningar.

mysql> select product_name, count(amount)
           from sales,product
           where sales.product_id=product.id
           group by product_name
           order by count(amount) desc
           limit 3;
 +--------------+---------------+
 | product_name | count(amount) |
 +--------------+---------------+
 | Bike         |             3 |
 | Car          |             2 |
 | Bicycle      |             1 |
 +--------------+---------------+


Få bästsäljande produkter med Ubiq

Ubiqs rapporteringsverktyg stöder alla ovanstående SQL-frågor och gör det enkelt att visualisera SQL-resultat på olika sätt. Det låter dig också skapa instrumentpaneler och diagram från MySQL-data. Här är SQL-frågan för att få bästsäljande produkter i Ubiq.

När du har kört frågan kan du faktiskt helt enkelt klicka på en visualiseringstyp för att plotta resultatet i ett diagram.

Behöver du ett rapporteringsverktyg för MySQL? Ubiq gör det enkelt att visualisera data på några minuter och övervaka i realtidsinstrumentpaneler. Prova det idag!

  1. Återställ rotlösenordet för MySQL Server

  2. Hur man filtrerar frågeresultat i PostgreSQL

  3. kund.pk_name går med transaktioner.fk_namn vs. kund.pk_id [seriell] går med transaktioner.fk_id [heltal]

  4. Rails Resque-arbetare misslyckas med PGError:servern stängde anslutningen oväntat