leetcode597. 好友申請 I :總體通過率(SQL)

在 Facebook 或者 Twitter 這樣的社交應用中,人們經常會發好友申請也會收到其他人的好友申請。現在給如下兩個表:

?

表:?friend_request

| sender_id | send_to_id |request_date|
|-----------|------------|------------|
| 1 ? ? ? ? | 2 ? ? ? ? ?| 2016_06-01 |
| 1 ? ? ? ? | 3 ? ? ? ? ?| 2016_06-01 |
| 1 ? ? ? ? | 4 ? ? ? ? ?| 2016_06-01 |
| 2 ? ? ? ? | 3 ? ? ? ? ?| 2016_06-02 |
| 3 ? ? ? ? | 4 ? ? ? ? ?| 2016-06-09 |
?

表:?request_accepted

| requester_id | accepter_id |accept_date |
|--------------|-------------|------------|
| 1 ? ? ? ? ? ?| 2 ? ? ? ? ? | 2016_06-03 |
| 1 ? ? ? ? ? ?| 3 ? ? ? ? ? | 2016-06-08 |
| 2 ? ? ? ? ? ?| 3 ? ? ? ? ? | 2016-06-08 |
| 3 ? ? ? ? ? ?| 4 ? ? ? ? ? | 2016-06-09 |
| 3 ? ? ? ? ? ?| 4 ? ? ? ? ? | 2016-06-10 |
?

寫一個查詢語句,求出好友申請的通過率,用 2 位小數表示。通過率由接受好友申請的數目除以申請總數。

?

對于上面的樣例數據,你的查詢語句應該返回如下結果。

?

|accept_rate|
|-----------|
| ? ? ? 0.80|
?

注意:

通過的好友申請不一定都在表?friend_request?中。在這種情況下,你只需要統計總的被通過的申請數(不管它們在不在原來的申請中),并將它除以申請總數,得到通過率
一個好友申請發送者有可能會給接受者發幾條好友申請,也有可能一個好友申請會被通過好幾次。這種情況下,重復的好友申請只統計一次。
如果一個好友申請都沒有,通過率為 0.00 。
?

解釋:?總共有 5 個申請,其中 4 個是不重復且被通過的好友申請,所以成功率是 0.80 。

?

進階:

你能寫一個查詢語句得到每個月的通過率嗎?
你能求出每一天的累計通過率嗎?

思路:兩個表去重相除即可。

select round(ifnull((select count(distinct requester_id,accepter_id) from request_accepted)/(select count(distinct sender_id,send_to_id) from friend_request),0),2)
as 'accept_rate';

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/444206.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/444206.shtml
英文地址,請注明出處:http://en.pswp.cn/news/444206.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode543. 二叉樹的直徑

給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過根結點。 示例 : 給定二叉樹 1 / \ 2 3 / \ 4 5 返回 3, 它的長度是路徑 [4,2,1,3] 或者 [5,2,1,3]…

leetcode580. 統計各專業學生人數(SQL)

一所大學有 2 個數據表,分別是 student 和 department ,這兩個表保存著每個專業的學生數據和院系數據。 寫一個查詢語句,查詢 department 表中每個專業的學生人數 (即使沒有學生的專業也需列出)。 將你的查詢結果按照…

leetcode603. 連續空余座位(SQL)

幾個朋友來到電影院的售票處,準備預約連續空余座位。 你能利用表 cinema ,幫他們寫一個查詢語句,獲取所有空余座位,并將它們按照 seat_id 排序后返回嗎? | seat_id | free | |---------|------| | 1 | 1 | …

leetcode607. 銷售員(SQL)

給定 3 個表: salesperson, company, orders。 輸出所有表 salesperson 中,沒有向公司 RED 銷售任何東西的銷售員。 解釋 輸入 表: salesperson ---------------------------------------------------- | sales_id …

leetcode612. 平面上的最近距離(SQL)

表 point_2d 保存了所有點(多于 2 個點)的坐標 (x,y) ,這些點在平面上兩兩不重合。 寫一個查詢語句找到兩點之間的最近距離,保留 2 位小數。 | x | y | |----|----| | -1 | -1 | | 0 | 0 | | -1 | -2 | 最近距離在點 (-1,-…

TCP與UDP特點與區別

TCP/IP協議 IP地址(IP Address) 計算機分布在世界各地,要想和它們通信,必須要知道確切的位置。確定計算機位置的方式有多種,IP 地址是最常用的,例如,114.114.114.114 是國內第一個、全球第三個…

leetcode613. 直線上的最近距離(SQL)

表 point 保存了一些點在 x 軸上的坐標,這些坐標都是整數。 寫一個查詢語句,找到這些點中最近兩個點之間的距離。 | x | |-----| | -1 | | 0 | | 2 | 最近距離顯然是 1 ,是點 -1 和 0 之間的距離。所以輸出應該如下: | …

三次握手與四次揮手

三次握手 三次握手是指在建立TCP連接時,需要client端和server端共進行三次信息確認。 第一次握手:建立連接。client發送連接請求報文段(SYN位置為1,Sequence Number為x),然后,client端進入SYN…

leetcode619. 只出現一次的最大數字(SQL)

表 my_numbers 的 num 字段包含很多數字,其中包括很多重復的數字。 你能寫一個 SQL 查詢語句,找到只出現過一次的數字中,最大的一個數字嗎? --- |num| --- | 8 | | 8 | | 3 | | 3 | | 1 | | 4 | | 5 | | 6 | 對于上面給出的樣例…

socket入門

socket 簡介 Socket即套接字,就是對網絡中不同主機上的應用進程之間進行雙向通信的端點的抽象。一個套接字就是網絡上進程通信的一端,提供了應用層進程利用網絡協議交換數據的機制。從所處的地位來講,套接字上聯應用進程,下聯網絡…

leetcode614. 二級關注者(SQL)

在 facebook 中,表 follow 會有 2 個字段: followee, follower ,分別表示被關注者和關注者。 請寫一個 sql 查詢語句,對每一個關注者,查詢他的關注者數目。 比方說: ------------------------- | follow…

SPI、I2C、UART 三種串行總線對比介紹

轉載自https://blog.csdn.net/oqqHuTu12345678/article/details/65445338 參考博客 https://blog.csdn.net/xiaodingqq/article/details/80342459 https://blog.csdn.net/weiqifa0/article/details/8845281 https://www.zhihu.com/question/22632011 http://www.360doc.cn/…

leetcode1045. 買下所有產品的客戶(SQL)

Customer 表: ---------------------- | Column Name | Type | ---------------------- | customer_id | int | | product_key | int | ---------------------- product_key 是 Product 表的外鍵。 Product 表: ---------------------- | C…

Oracle利用序列實現自動增長列

在SQL Server以及MySql中都有相應的自動增長列類型,而Oracle中則沒有此類型,那如果要實現自動增長列需要怎么辦呢. 我們可以利用序列來實現.插入數據時候,可以像sql以及mysql一樣,不用顯示指定需要自動增長的列的值. 代碼實現如下: CREATE TABLE SYS_ROLES ( ID integer NOT NU…

C++ new和malloc的區別

這里先對new和delete簡單進行一下總結,然后再細說new和malloc的區別。 一、new和delete C語言提供了malloc和free兩個系統函數,完成對堆內存的申請和釋放。而C則提供了兩個關鍵字new和delete; 1.1 規則 new/delete是關鍵字,效率…

leetcode620. 有趣的電影(SQL)

某城市開了一家新的電影院,吸引了很多人過來看電影。該電影院特別注意用戶體驗,專門有個 LED顯示板做電影推薦,上面公布著影評和相關電影描述。 作為該電影院的信息部主管,您需要編寫一個 SQL查詢,找出所有影片描述為…

leetcode1050. 合作過至少三次的演員和導演(SQL)

ActorDirector 表: ---------------------- | Column Name | Type | ---------------------- | actor_id | int | | director_id | int | | timestamp | int | ---------------------- timestamp 是這張表的主鍵. 寫一條SQL查詢語句獲取合作…

linux內核相關知識

參考https://www.cnblogs.com/xdyixia/p/9248240.html linux內核啟動過程 一個嵌入式 Linux 系統從軟件角度看可以分為四個部分:引導加載程序(Bootloader),Linux 內核,文件系統,應用程序。其中 Bootloade…

棧與堆的區別(內存分配與數據結構)

參考自https://blog.csdn.net/K346K346/article/details/80849966/ 堆(Heap)與棧(Stack)包含兩層含義: 程序內存布局場景下的內存管理方式數據結構中的兩種常見的數據結構 1. 程序內存分配中的堆與棧 1.1 棧介紹 …