[英]SELECT COUNT(DISTINCT ..)
我希望能夠選擇每個DATE的COUNT(DISTINCT個值,然后將它們全部加在一起。這是我的主要計數代碼:
SELECT *,
COUNT(track.ip) AS tracker
FROM user,
track
WHERE track.user = $user
GROUP BY $user
ORDER BY tracker
LIMIT 1
我的數據庫名稱是datein,以及它輸入完成INSERT的日期和時間的方式。 這是代碼:
Database column : datein
Database insert looks like : 2013-11-8 11:17:23
我相信它看起來應該類似於以下代碼:
SELECT *,
COUNT(DISTINCT track.user) AS tracker
FROM user,
track
WHERE track.user = $user
AND track.datein >= NOW() - INTERVAL BEGINNING DAY
GROUP BY $user
ORDER BY tracker
LIMIT 1
它看起來應該類似於上面的代碼,但是應該有一種選擇它的方式。 如何每個日期選擇COUNT個DISTINCT值?
根據您的評論,我想您需要比較數據庫中最早的日期中的datein,如果要這樣做,可以將MIN
函數與HAVING
子句結合使用
SELECT *,
COUNT(DISTINCT track.user) AS tracker
FROM user,
track
GROUP BY $user
HAVING track.user = $user
AND track.datein >= MIN(datein)
ORDER BY tracker
LIMIT 1
看起來您想要一個包含兩列的結果集:不重復用戶數,日期。 我無法弄清您的FROM
子句,因此我將跳過該部分。
讓我們從包含用戶和日期的結果集開始。
SELECT DISTINCT user,
TO_DATE(DATE_FORMAT(track.datein, '%Y-%m-%d')) datein
FROM whatever
WHERE whatever
AND whatever
這將datetime值壓縮為簡單日期,並為我們提供了具有不同行的用戶/日期結果集。
接下來,我們對其進行總結。
SELECT count(*) AS tracker
datein
FROM (
SELECT DISTINCT user,
TO_DATE(DATE_FORMAT(track.datein, '%Y-%m-%d')) datein
FROM whatever
WHERE whatever
AND whatever
) AS a
GROUP BY datein
那應該給您您需要的結果集。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.