問題重述
trips 表中存所有計程車的行程資訊。每段行程有唯一鍵 id,client_id 和 driver_id 是 users 表中 users_id 的外來鍵。status 是列舉型別,列舉成員為 (『completed』, 『cancelled_by_driver』, 『cancelled_by_client』)。
首先我們先建立trips表,如下所示
users 表存所有使用者。每個使用者有唯一鍵 users_id。banned 表示這個使用者是否被禁止,role 則是乙個表示(『client』, 『driver』, 『partner』)的列舉型別。
users**如下
問題要求:寫一段 sql 語句查出 2023年10月1日 至 2023年10月3日 期間非禁止使用者的取消率。基於上表,你的 sql 語句應返回如下結果,取消率(cancellation rate)保留兩位小數。
問題分析:
題目並沒有說清楚顧客到底包不包括司機,按照題目的示例結果顯示,其實是包括的司機的,由司機提出的取消請求也應計算進去,我們用case when … then … else … end關鍵字來做,我們用cancelled%來表示開頭是cancelled的所有項,這樣就包括了driver和client,然後分母是所有的資訊數,限制條件裡限定了時間段,然後是沒有被banned的,然後再利用round函式並給定引數2即可得到保留兩位小數的效果。
sql語句為
select t.request_at day,round(
sum(
(case
when t.status like 'cancelled%'
then 1
else 0
end))/count(*),2) as'cancellation rate'
from trips t
join users u
on u.users_id =t.client_id and u.banned = 'no'
where
t.request_at between '2013-10-01'and'2013-10-03'
group by t.request_at;
結果為
MySQL學習記錄之行格式與頁格式
之前的文章已經提過了在bufferpool中,是按照頁的形式來存放的。但是資料在表中是一行行的儲存的,那麼這些資料又是怎樣的格式?記錄在磁碟上的存放方式被稱為行格式,innodb儲存引擎中有4種不同型別的行格式,compact redundant dynamic和compressed。指定行格式 c...
mysql 使用者 MySQL使用者與許可權的管理詳解
使用者連線到mysql,可以做各種查詢,這都是mysql使用者與許可權功能在背後維持著操作。使用者與資料庫伺服器互動資料,分為兩個階段 1 你有沒有權連線上來 2 你有沒有權執行本操作 1 你有沒有權連線上來 伺服器如何判斷使用者有沒有權連線上來?依據 1 你從 來?host 2 你是誰?user ...
mysql使用者多少合適 MySQL使用者與許可權
使用者連線到mysql,並做各種查詢,在使用者和伺服器中間分為兩個階段 1 使用者是否有權連線上來 2 使用者是否有權執行此操作 如select,update等等 先看第乙個階段 伺服器如何判斷使用者是否有權連線上來 依據三個引數 你從哪來?host 你是誰?user 你的密碼是多少?passwor...