2017-01-13 3 views
-1

Ich möchte meine Top-5-Kunden durch ihren Benutzernamen aus meiner Datenbank finden:anzeigen Top 5 der Erscheinungen - Python - sqlite

Die Datenbank-Code ist:

BEGIN TRANSACTION; 
CREATE TABLE "OrderHistory" (
    `Username` TEXT, 
    `ProductID` TEXT, 
    `Category` INTEGER, 
    `Date` TEXT, 
    `Qty` INTEGER, 
    `ItemHistory` TEXT, 
    `TotalPrice` INTEGER 
); 
INSERT INTO `OrderHistory` (Username,ProductID,Category,Date,Qty,ItemHistory,TotalPrice) VALUES 
    ('saqib','1',7,'2017-01-12',2,'Cookie',4), 
    ('saqib','1',7,'2017-01-12',10,'Cookie',20), 
    ('saqib','1',7,'2017-01-13',12,'Cookie',24), 
    ('saqib','1',7,'2017-01-13',8,'Cookie',16), 
    ('malik','1',7,'2017-01-13',5,'Cookie',10), 
    ('malik','1',7,'2017-01-13',4,'Cookie',8), 
    ('dex','1',7,'2017-01-13',7,'Cookie',14), 
    ('olly','1',7,'2017-01-13',3,'Cookie',6), 
    ('matt','1',7,'2017-01-13',9,'Cookie',18); 
    COMMIT; 

I, die Kunden herausfinden möchten, kaufen die meisten Produkte

dies in einfachen python ist und sQLite keinen Rahmen im Einsatz

+1

Das sieht tatsächlich wie eine SQL-Frage aus, die am besten mit einer GROUP BY-Klausel gelöst wird. – Anonimista

+0

@Anonimista und wie machst du das, ich habe keine Ahnung, wie Sie das tun können Sie den Code schreiben, um zu erklären, wenn Sie nichts dagegen haben –

+0

BTW, Backticks für das Zitieren von Bezeichnern ist ein MySQL-ism, dass SQLite aus Kompatibilitätsgründen unterstützt Sie außerhalb von MySQL zu verwenden, ist eine schlechte Angewohnheit, die Sie nicht entwickeln möchten. Verwenden Sie stattdessen Anführungszeichen, da dies der Standard ist. –

Antwort

0
SELECT Username, sum(Qty) AS ProductsNumber 
FROM OrderHistory 
GROUP BY Username 
ORDER BY ProductsNumber DESC, Username ASC 
LIMIT 5 

Sie können es auf SQL Fiddle testen: http://sqlfiddle.com/#!7/f6da2/1