簡體   English   中英

我如何划分和添加列

[英]how do i divide and add column

我有一個包含人們的 ID 和日期的列表,該列表顯示了一個人何時進入網站(他的 ID 和日期)。 我如何才能顯示所有日期有多少人連續兩天進入該網站?

the data ( 30,000 like this in diffrent dates)
01/03/2019  4616
01/03/2019  17584
01/03/2019  7812
01/03/2019  34
01/03/2019  12177
01/03/2019  7129
01/03/2019  11660
01/03/2019  2428
01/03/2019  17514
01/03/2019  10781
01/03/2019  7629
01/03/2019  11119

我成功顯示了同一天進入網站的人數,但我沒有成功添加一列顯示連續進入2天的人數。

date    number_of_entrance
2019-03-01  7099
2019-03-02  7021
2019-03-03  7195
2019-03-04  7151
2019-03-05  7260
2019-03-06  7169
2019-03-07  7076
2019-03-08  7081
2019-03-09  6987
2019-03-10  7172

select date,count(*) as number_of_entrance
fROM [finalaa].[dbo].[Daily_Activity]
group by Date
order by date;

我如何才能顯示所有日期有多少人連續兩天進入該網站?

我只會使用lag()

select count(distinct person)
from (select t.*,
             lag(date) over (partition by person order by date) as prev_date
      from t
     ) t
where prev_date = dateadd(day, -1, date);

您的代碼建議使用 SQL Server,因此我使用了該數據庫中的日期函數。

如果你想要這個每個日期:

select date, count(distinct person)
from (select t.*,
             lag(date) over (partition by person order by date) as prev_date
      from t
     ) t
where prev_date = dateadd(day, -1, date)
group by date;

您可以使用返回 2 天內常見入口數量的子查詢:

select 
  t.date,
  count(*) as number_of_entrance,
  (
    SELECT COUNT(g.id) FROM (
      SELECT id 
      FROM [Daily_Activity] 
      WHERE date IN (t.date, t.date - 1)
      GROUP BY id
      HAVING COUNT(DISTINCT date) = 2
    ) g
  ) number_of_entrance_2_days_in_a_row
FROM [Daily_Activity] t
group by t.date
order by t.date;

id替換為表中第二列的名稱。

暫無
暫無

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

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