簡體   English   中英

按 Id 顯示平均評分和 Id 計數 Mysql

[英]Display Average Rating by Id with Count of Ids Mysql

我有一個 MYSQL 表,我想在其中獲得產品 ID 計數的平均評分。 這是表格的樣本。

╔════╦═════════════╦══════════╦══════════╗
║ ID ║ product_Id  ║ rating   ║ status   ║
╠════╬═════════════╬══════════╬══════════╣
║  1 ║ 5           ║ 1        ║        1 ║
║  2 ║ 5           ║ 3        ║        1 ║
║  3 ║ 5           ║ 4        ║        1 ║
║  4 ║ 4           ║ 3        ║        1 ║
║  5 ║ 4           ║ 5        ║        1 ║
║  6 ║ 6           ║ 4        ║        1 ║
║  7 ║ 6           ║ 4        ║        1 ║
╚════╩═════════════╩══════════╩══════════╝

我已經處理了這段代碼,但沒有得到想要的結果。

SELECT r.product_id, ROUND(AVG(r.rating),0) as avg_rating, COUNT(r.product_id) AS products_total FROM review r
                WHERE r.status = 1 
                GROUP BY r.product_id ASC

這給了我結果,平均評分(相同產品 ID 的評分數)

  1. 3(3)
  2. 4(2)
  3. 4(2)

我希望將結果打印為平均評分(具有相同評分的產品 id 的數量)

  1. 3(1)
  2. 4(2)

我怎樣才能達到上述結果

如果我理解,那么您需要兩個級別的聚合:

SELECT avg_rating, COUNT(*)
FROM (SELECT r.product_id, AVG(r.rating) as avg_rating, COUNT(r.product_id) AS products_total
      FROM review r
      WHERE r.status = 1 
      GROUP BY r.product_id
     ) p
GROUP BY avg_rating

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM