SQL演算法題

2022-09-06 03:33:07 字數 1282 閱讀 8249

現有乙個含三個欄位的使用者表,id/email/mobile, id是自動遞增的,不具有重複性。當email和mobile有乙個重複時即認為是同乙個user, 請用一種方法查詢表中實際有幾個user?

--樣例資料

create table tb_test(

id int ,

email varchar(10),

mobile varchar(20)

);truncate table tb_test;

insert into tb_test values(1, 'a','e');

insert into tb_test values(2, 'b','d');

insert into tb_test values(3, 'c','d');

insert into tb_test values(4, 'c','a');

insert into tb_test values(5, 'd','b');

insert into tb_test values(6, 'e','a');

insert into tb_test values(7, 'e','f');

insert into tb_test values(8, 'e','e');

-- 正確答案: 2個

解法:

-- 正解

select count(distinct email)+count(distinct mobile)-count(distinct concat(email,mobile)) from tb_test;

--但乙個特殊情況:就是=0的情況下要+1(見下圖)

-- 我的解法:底層思路一致

sql語句題集

15 顯示所有雇員的姓名,用a替換所有 a select replace ename,a a from emp 16 顯示所有雇員的姓名以及滿10年服務年限的日期 select ename,from days to days now to days hiredate 服務年限 from emp se...

SQL刷題心得

題目 給定乙個 salary 表,如下所示,有 m 男性 和 f 女性 的值。交換所有的 f 和 m 值 例如,將所有 f 值更改為 m,反之亦然 要求只使用乙個更新 update 語句,並且沒有中間的臨時表。update 表名稱 set 列名稱 新值 where 列名稱 某值 update sal...

演算法 常見演算法題

演算法題 假如有100個不相同的數,比如從1到100,怎樣使用10次取出其中的10個不同的數字,要求每個數取出的概率一樣 一開始沒有說10次,所以我說,使用乙個random函式,以時間為種子來取,當取出乙個時,做標記,下次再取到這個數時,重新取一次 然後他就說了如果只能夠取10次怎麼辦?一開始我想到...