mysql查詢——統計每日新用戶數量

2020-12-04 day數據處理與分析

下圖是一張網站用戶活動表(User_Activities),表中包含欄位UserId(用戶編號)、Activity(用戶活動,可取值login、orders、logout)、Date(活動日期),現需要編寫一個查詢語句,統計網站每日的新用戶數量,即統計每日登錄用戶中首次登錄網站的用戶數。

方法一

第一步,根據UserId分組查詢,得出每個用戶的最小登錄日期即各個用戶首次登錄網站的日期。

select UserId,min(Date)as login_date

from User_Activities

where Activity='login'

group by UserId;

查詢結果如下:

第二步,將第一步的查詢結果當做臨時表,分組統計每個login_date的用戶數量。

select login_date,count(UserId)as user_count

from

(

select UserId,min(Date)as login_date

from User_Activities

where Activity='login'

group by UserId

)ua

group by login_date

order by login_date;

最終查詢結果如下:

方法二

第一步,使用窗口函數rank()對UserId、Date進行分組排名。(窗口函數mysql8.0及以上版本可用)

select *,rank() over(partition by UserId order by Date) as rnk

from User_Activities

where Activity='login';

查詢結果如下:

第二步,篩選排名為1的數據並分組統計每個Date的用戶數量。

select Date as login_date,count(UserId)as user_count

from

(select *,rank() over(partition by UserId order by Date) as rnk

from User_Activities

where Activity='login'

)ua

where rnk=1

group by Date

order by Date;

最終查詢結果如下:

相關焦點

  • mysql 版本號解釋_mysql workbench查詢mysql版本號 - CSDN
    在mysql中,含有空值的列很難進行查詢優化,因為它們使得索引、索引的統計信息以及比較運算更加複雜。B+樹的內部結點並沒有指向關鍵字具體信息的指針,只是作為索引使用,其內部結點比B樹小,盤塊能容納的結點中關鍵字數量更多,一次性讀入內存中可以查找的關鍵字也就越多,相對的,IO讀寫次數也就降低了。而IO讀寫次數是影響索引檢索效率的最大因素;B+樹的查詢效率更加穩定。
  • mysql查詢前一周的數據_mysql查詢當天的數據 - CSDN
    mysql 昨天 一周前 一月前 一年前的數據 這裡主要用到了DATE_SUB,參考如下代碼如下:SELECT * FROM
  • 一條查詢SQL在MySQL中是怎麼執行的
    一般連接命令是這樣寫的:mysql -h$ip -P$port -u$user -p輸入命令之後,就需要在交互對話中輸入密碼,密碼也可以直接寫在-p後面,但是這種操作一般是開發過程中,連接生產伺服器不建議這樣做,因為可能會導緻密碼洩露。
  • mysql/mariadb資料庫在查詢結果中再次查詢篩選的操作方法
    今天是2020年4月9日,我跟大家分享一個二次操作mysql資料庫查詢結果的方法.我以資料庫 mariadb為例進行說明.因為它有個heidiSQL圖形管理工具,比較好操作.資料庫 mariadb為例進行說明.因為它有個heidiSQL圖形管理工具,比較好操作.
  • MySQL如何計算統計redo log大小
    在MySQL中如何計算、統計重做日誌(redo log)的生成情況呢? 例如10分鐘內,生成了多少M的redo log呢?30分鐘內又生成了多少M的redo log.....。MySQL沒有像Oracle中那樣的系統視圖統計這些數據,但是我們可以通過一些方法曲線的統計二進位日誌的生成量。
  • MySQL字符串截取 和 截取字符進行查詢
    通過mysql自帶的一些字符串截取函數,對數據進行處理,下面是我整理的字符串截取 和 截取字符進行查詢。substring_index("aaa_bbb_ccc","_",2) ,返回為 aaa_bbb;substring_index(substring_index("aaa_bbb_ccc","_",-2),"_",1) ,返回為 bbb;2.concat是連接幾個字符串 例子:concat(『m』,』y』,’s』,』q』,』l』); 返回:mysql
  • mysql統計日活、周活、月活
    mysql分組函數、組函數、聚合函數、統計函數直接po代碼,代碼中有注釋#二、分組函數/*功能:用作統計使用,又稱為聚合函數或統計函數或組函數分類:sum 求和、avg 平均值
  • 如何在ubuntu20.04安裝MySQL並修改資料庫密碼
    sudo apt install mysql-client-core-83、再次輸入mysql命令,提示不能連接上mysql server,由提示可知mysql服務端沒有安裝;輸入命令sudo apt-get
  • 一千行MySQL學習筆記
    g. limit 子句,限制結果數量子句    僅對處理好的結果進行數量限制。將處理好的結果的看作是一個集合,按照記錄出現的順序,索引從0開始。    limit 起始位置, 獲取條數    省略第一個參數,表示從索引0開始。
  • 基於MySQL資料庫應用開發實現嵌入式數控系統的設計
    具體創建過程如下: % mysql –uroot mysql; //進入資料庫 mysql》 SET PASSWORD=PASSWORD(『lyw00001』); //為根用戶分配一個口令 mysql》 CREATE DATABASE work ; //創建work資料庫 mysql》 GRANT ALL ON work.* to lyw@localhost
  • MySQL 8.0 正式版 8.0.11 發布:比 MySQL 5.7 快 2 倍
    下面簡要介紹 MySQL 8 中值得關注的新特性和改進。1. 性能:MySQL 8.0 的速度要比 MySQL 5.7 快 2 倍。MySQL 8.0 在以下方面帶來了更好的性能:讀/寫工作負載、IO 密集型工作負載、以及高競爭("hot spot"熱點競爭問題)工作負載。
  • MySQL8.0窗口函數做數據排名統計詳細教程
    MySQL8.0新增了窗口函數,大大的方便了做數據排名統計的人,很多朋友還不清楚怎麼用MySQL8.0做數據統計排名,下面就來為大家分享一篇心得文章。
  • MySQL 8.0 正式版 8.0.11 發布:比 MySQL 5.7 快 2 倍 - OS...
    下面簡要介紹 MySQL 8 中值得關注的新特性和改進。1. 性能:MySQL 8.0 的速度要比 MySQL 5.7 快 2 倍。MySQL 8.0 在以下方面帶來了更好的性能:讀/寫工作負載、IO 密集型工作負載、以及高競爭("hot spot"熱點競爭問題)工作負載。
  • mysql 矩陣類型專題及常見問題 - CSDN
    隔離性是指當多個用戶並發訪問資料庫時,比如同時訪問一張表,資料庫每一個用戶開啟的事務,不能被其他事務所做的操作幹擾(也就是事務之間的隔離),多個並發事務之間,應當相互隔離。持久性是指事務的操作,一旦提交,對於資料庫中數據的改變是永久性的,即使資料庫發生故障也不能丟失已提交事務所完成的改變。
  • MySQL8.0新特性CTE(Common Table Expression)
    CTE優勢查詢語句的可讀性更好在一個查詢中,可以被引用多次能夠連接多個CTE能夠創建遞歸查詢能夠提高SQL執行性能的主體中引用一次或多次CTE,可以把CTE看成是一類提前物化的臨時表,以便於查詢主體引用。
  • MySQL 數據校驗工具-愛可生|mysql|perl|伺服器|node01_網易訂閱
    選擇查詢。它改變塊的大小,使校驗和查詢在所需的時間內運行。分塊表的目的是確保校驗和不受幹擾,並且不會在伺服器上造成太多複製延遲或負載,而不是使用單個大查詢處理每個表。這就是為什麼默認情況下每個塊的目標時間是 0.5 秒。  2.
  • MySQL存儲引擎的物理結構與表空間
    InnoDB物理結構在5.6版本中,ibdata1包含存儲系統元信息,undo表空間數據和臨時表空間在5.7版本中,文件結構與作用如下表空間在5.7版本中下面兩個參數長的很像,名字叫起來也相似,但完全不一樣,需要重點牢記ibdata1:整個庫的統計信息和undo信息ibd:數據行和索引信息
  • 高性能Mysql主從架構的複製原理及配置詳解
    否則,你必須要小心,以避免用戶對主伺服器上的表進行的更新與對從伺服器上的表所進行的更新之間的衝突。mysql支持的複製類型:基於語句的複製:在主伺服器上執行的SQL語句,在從伺服器上執行同樣的語句。MySQL默認採用基於語句的複製,效率比較高。一旦發現沒法精確複製時, 會自動選著基於行的複製。基於行的複製:把改變的內容複製過去,而不是把命令在從伺服器上執行一遍.
  • python3.8操作(插入,刪除)mysql/MariaDB資料庫
    03python代碼部分#pip install mysql-connectorimport mysql.connectorimport time# INSERT INTO public.a1(# name, age)# VALUES ('金源', 37);# ALTER TABLE a1 ADD COLUMN id SERIAL PRIMARY KEY;mydb
  • mysql昨天的日期時間函數 - CSDN
    mysql時間日期內置函數–非常方便用於查詢今天、昨天、上周,本月,上月,年度查詢等,但是千萬要監控mysql語句的性能,適當加索引優化一下查詢速度哦今天select * from 表名 where to_days(時間欄位名) = to_days(now());