[英]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 條記錄,盡管我需要兩條記錄計數:
這是 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.