From b1c83bf58f4ebbfcec44d6791c775cbbb22c5f8f Mon Sep 17 00:00:00 2001 From: root Date: Sat, 1 Mar 2025 13:06:28 +0000 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3sql=E8=AF=AD=E5=8F=A5?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Database.cpp | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/Database.cpp b/Database.cpp index 63f6e03..97dc189 100644 --- a/Database.cpp +++ b/Database.cpp @@ -58,12 +58,14 @@ VisitorStats Database::visitorStats(const std::string &url) { std::list Database::mostViewedUrls(int n) { std::list ret; sqlite3_stmt *statement = nullptr; - const char *query = "SELECT url, SUM(page_view_count) AS total_page_views " - "FROM visit_analysis " - "GROUP BY url " - "ORDER BY total_page_views DESC " - "LIMIT ?;"; - + const char *query = R"( + SELECT url, SUM(page_view_count) AS total_page_views + FROM visit_analysis + GROUP BY url + ORDER BY total_page_views DESC + LIMIT ?; + )"; + if (sqlite3_prepare_v2(m_sqlite, query, -1, &statement, nullptr) == SQLITE_OK) { sqlite3_bind_int(statement, 1, n); @@ -80,10 +82,13 @@ std::list Database::mostViewedUrls(int n) { std::list Database::latestViewedUrls(int n) { std::list ret; sqlite3_stmt *statement = nullptr; - const char *query = "SELECT url, last_view_time " - "FROM visit_analysis " - "ORDER BY last_view_time DESC " - "LIMIT ?;"; + const char *query = R"( + SELECT url, MAX(last_view_time) AS latest_view_time + FROM visit_analysis + GROUP BY url + ORDER BY latest_view_time DESC + LIMIT ?; + )"; if (sqlite3_prepare_v2(m_sqlite, query, -1, &statement, nullptr) == SQLITE_OK) { sqlite3_bind_int(statement, 1, n);