MySQL之行程與使用者

2021-09-11 20:46:35 字數 1319 閱讀 6038

問題重述

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...