簡體   English   中英

如何根據日期獲取不同的行數

[英]How to get distinct count of rows according to dates

實際上,我確實根據日期計算了不同的 empid 行。 但問題是我只得到一個特定日期的 empid 記錄。請讓我知道如何獲取所有 empid 記錄。 這是我的 sql 查詢。

$sql = "
SELECT COUNT(DISTINCT subcount.empid) AS CountOf
     , subcount.name
     , subcount.date
     , subcount.empid
     , calendar.cdate
  FROM subcount
     , calendar
 WHERE subcount.date = calendar.cdate
 GROUP 
    BY subcount.date
";

這是 sql 數據庫。

例如,當您查看 2020-11-10 時,有兩個 empid 分別為 10 和 7。

當我嘗試獲取兩條記錄時,我只得到 empid 10 條記錄或 7 條記錄,盡管我需要兩條記錄計數:

這里是sql數據庫。例如,當您查看 2020-11-10 時,有兩個帶有 10 和 7 的 empid。當我嘗試獲取這兩條記錄時,我只得到 empid 10 條記錄或 7 條記錄,盡管我需要兩條記錄數

這是 output:

這是輸出

請幫助我。

GROUP BY ___表示每 ___ 的結果行。 如果按員工 ID 分組,則每個員工 ID 對應一行。 如果您希望每個員工 ID 和日期一行,請按員工 ID 和日期分組。

SELECT any_value(s.name), s.`date`, s.empid, c.cdate, count(*)
FROM subcount s
JOIN calendar c on c.cdate = s.`date`
GROUP BY s.`date`, s.empid
ORDER BY s.`date`, s.empid;

我希望日歷表每個日期有一行,因此結果行只有一個cdate 但是, name可能因行而異,因此我們必須告訴 DBMS 選擇哪個。 使用ANY_VALUE我告訴它我不在乎哪個。

我認為您要問的是在給定日期獲取具有提交數量的員工列表,這可以表明這樣做:

SELECT  cnt.empid AS EmpId
        , sc.Name
        , cnt.`date` AS Timestamp
        , cnt.CountOf AS SubmissionCount
FROM    subcount AS sc
INNER JOIN  
(
        SELECT  subcount.empid
                subcount.`date`,
                count(*) AS CountOf 
        FROM        subcount
        INNER JOIN  calendar
        ON      subcount.`date` = calendar.cdate
        GROUP BY 
                subcount.`date`, subcount.empid
)       AS cnt
ON      sc.empid == cnt.empid

它使用嵌套的 SELECT 和 GROUP BY 來計算每個員工的計數(empid)和日期(不僅是員工) Outer SELECT join nested SELECT to get subcount.Name piece of data which isn't retrieved in nested SELECT so it needs to be retrieved using outer SELECT.

暫無
暫無

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

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