搜尋

首頁  >  問答  >  主體

如何在 MySQL 中對具有多個 HAVING 值的多個欄位進行 GROUP BY?

我正在嘗試建立一個 mysql 查詢來查看儲存搜尋查詢的表。該查詢試圖取得符合以下條件的所有行:

此查詢不起作用,但應概述我正在嘗試執行的操作:

SELECT 
  * 
FROM 
  `analytics` 
WHERE 
  `date` >= '2021-01-01' 
GROUP BY 
  `query` 
HAVING 
  COUNT(*) >= 3 
  AND 
GROUP BY 
  `user` 
HAVING 
  COUNT(*) >= 2 
ORDER BY 
  id DESC;

範例資料

id 用戶 查詢 日期
1 5 什麼是狗 2021-01-01
2 5 什麼是狗 2021-01-01
3 6 什麼是狗 2021-01-01
4 7 什麼是狗 2021-01-01
5 7 什麼是兄弟 2021-01-01

範例 SQL

SELECT 
  * 
FROM 
  analytics 
WHERE 
  date >= '2021-01-01' 
GROUP BY 
  query 
HAVING 
  COUNT(*) >= 3 
  AND 
GROUP BY 
  user 
HAVING 
  COUNT(*) >= 2 
ORDER BY 
  id DESC;

使用上面查詢中設定的值,應傳回查詢「What is a dogs」的單行,所有其他欄位並不重要。

我知道您可以將單獨的欄位以逗號分隔為 GROUP BY,但我似乎無法弄清楚如何為每個欄位設定不同的值。

P粉775723722P粉775723722302 天前472

全部回覆(1)我來回復

  • P粉818317410

    P粉8183174102024-02-27 00:58:40

    您可以在同一個 HAVING 子句中設定這兩個條件:

    SELECT `query`
    FROM `analytics`
    WHERE `date` >= '2021-01-01'
    GROUP BY `query`
    HAVING COUNT(*) >= 3 AND COUNT(DISTINCT `user`) >= 2;

    回覆
    0
  • 取消回覆