一、sql题
1.1 随机抽样
从库表table_a中随机抽取100条数据出来,那么这时候我们就需要用到order by了,因为我们知道order by是根据某一个字段值来统一排序,那么如果我们把order by 的字段换成随机函数,会直接让结果集随机排序,最后我们再加上limit 100,这样就可以达到随机抽取结果的目的,具体的实现示例即为如下:
select
*
from
table_a
order by rand()
limit 100
;
1.2 udf函数(第 N N N高的薪水)
1.2.1 返回数
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
SET N := N-1;
RETURN (
# Write your MySQL query statement below.
SELECT
salary
FROM
employee
GROUP BY
salary
ORDER BY
salary DESC
LIMIT N, 1
);
END
1.2.2 返回表
CREATE FUNCTION dbo.fnContactName() RETURNS TABLE
RETURN(
SELECT Id,LastName + ',' + FirstName AS Name
FROM Man
);
1.3 每个日期新用户的次日留存率
1.4 中位数
二、算法题
2.1 二分查找
- 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
输入: nums = [-1,0,3,5,9,12], target = 9
输出: 4
解释: 9 出现在 nums 中并且下标为 4
class Solution:
def search(self, nums: List[int], target: int) -> int:
left, right = 0, len(nums) - 1
while left <= right:
pivot = left + (right - left) // 2
if nums[pivot] == target:
return pivot
if target < nums[pivot]:
right = pivot - 1
else:
left = pivot + 1
return -1