SQL實戰-資料分析師-筆試面試-每日一練

椒椒。發表於2020-10-07

1、sqlite_master

針對庫中的所有表生成select count(*)對應的SQL語句,如資料庫裡有以下表,
(注:在 SQLite 中用 “||” 符號連線字串,無法使用concat函式)

employees
departments
dept_emp
dept_manage
salaries
titles
emp_bonus

那麼就會輸出以下的樣子:
在這裡插入圖片描述
程式碼實現:

select 'select count(*) from'||name||';' from sqlite_master 
where type='table'

注意:sqlite_master的使用見:https://blog.csdn.net/qq_38978225/article/details/108948158

2、連線||的使用

將employees表中的所有員工的last_name和first_name通過(’)連線起來。(不支援concat,請用||實現)

CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));

輸出格式:
在這裡插入圖片描述
程式碼實現:

select employees.last_name|| "'" || employees.first_name as name
from employees 

3、查詢字串’10,A,B’ 中逗號’,'出現的次數cnt。

題目描述:
查詢字串’10,A,B’ 中逗號’,'出現的次數cnt。

程式碼實現:

select length('10,A,B')-length(replace('10,A,B',',','')) as cnt

思路分析:
先使用replace將,替換為空,那麼整個字串減少的長度除,的長度,就是,出現的次數。

4、substr(first_name,-2,2)

sql按照first_name後面兩個字母的順序來進行排序.

題目描述:
”獲取Employees中的first_name,查詢按照first_name最後兩個字母,按照升序進行排列

CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));

輸出格式:
在這裡插入圖片描述
程式碼實現:

select first_name 
from employees 
order by substr(first_name,-2,2) ASC

解題思路:
注意這裡substr()函式的使用。https://blog.csdn.net/qq_38978225/article/details/108948529

5、concat

concat的使用見:連結

題目描述:

按照dept_no進行彙總,屬於同一個部門的emp_no按照逗號進行連線,結果給出dept_no以及連線出的結果employees

CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));

輸出格式:
在這裡插入圖片描述
程式碼實現:

select dept_no,group_concat(emp_no) as employees
from dept_emp 
group by dept_no


解題思路:
注意這裡的griup_concat的使用,詳細可見:連結

相關文章