1-1- sentencias SQL típicas preguntas de acabado

Discutir (usuario1, usuario2, tema)

 

 

(1) SQL: toda la discusión, pero no discutido tema Alice y Alice y Bob Crowe

 

seleccionar tema desde Discuta donde usuario1 = 'Alice' y usuario2 = 'Bob'

EXCEPTO

seleccionar tema desde Discuta donde usuario1 = 'Alice' y usuario2 = 'Crowe

 

de intersección (cruz)

 

(2) SQL: es el número de usuarios supera los 10 temas tratados

 

seleccionar la cuenta (*) a partir de (

seleccionar tema desde Discuta

grupo por tema

teniendo la cuenta (*)> 10

) Como T


Tripulación EMP (ENO, ename, trabajo, alquiler, salarios, DNO) eno es el número de empleado, DNO es un número de departamento, fecha de contratación es para ser contratado en la fecha de la compañía.

Departamento tabla DEPT (DNO, dname, loc)

 

①dname = número intermedio de los salarios de RI. Si el número del medio es de nueve empleados, los salarios estarán en orden descendente, el número del medio es la quinta, si diez es el número promedio de quinto y sexto en orden descendente.

 

conjunto @ id = -1

seleccionar avg (sueldo) a partir de (

seleccionar @id: = @ id + 1 como ID, el sueldo del departamento d, emp e

donde d.dno = e.dnp = O y dname = 'RI'

ordenado por salario) como t

donde t.id en (piso (@ id / 2), ceil (@ id / 2))

 

conjunto @ id = 0

seleccionar avg (sueldo) a partir de (

seleccionar @id: = @ id + 1 como ID, el sueldo del departamento d, emp e

donde d.dno = e.dnp = O y dname = 'RI'

ordenado por salario) como t

donde IF (% ID 2 = 0, ID en (ROUND (@ ID / 2,0), @ ID / 2 + 1), ID = ROUND (@ ID / 2,0))

 

ceil () / techo () mejora Tosei

   ex: ceil (1,2) = 2

2.floor () rondas abajo

    ex: baja (1,2) = 1

3.Round () redondeo

 

Cuando debe seleccionar ": = Asignación"

 

La diferencia de tiempo de los empleados de tiempo en cada departamento ③ en el primer sector y el último sector en la conversión de adultos es la diferencia de unos años, en términos de meses y meses es pobre.

 

seleccione alquiler en @firstdate de fin emp por límite de alquiler 0,1

Otra forma:

seleccionar @firstdate: = contratar desde el pedido emp por límite de alquiler 0,1

 

seleccione alquiler en @lastdate de fin emp por límite de alquiler desc 0,1

 

orden descendente desc

 

seleccionar TIMESTAMPDIFF (año, DATE_FORMAT (@firstdate, '% Y-% m-% d'), DATE_FORMAT (@lastdate, '% Y-% m-% d'))

seleccione TIMESTAMPDIFF (MES, DATE_FORMAT (@firstdate, '% Y-% m-% d'), DATE_FORMAT (@lastdate, '% Y-% m-% d'))


Emp (Eid, ename, edad, salario)

Obras (Eid, hizo, pct_time)

Dept (sí, dname, presupuesto, ManagerID)

 

1.1) mientras se trabaja en el nombre y la edad del "hardware" de cada empleado y "software" dos departamentos

 

seleccione e.ename, e.age de emp e, trabaja w, d departamento

donde e.eid = w.eid y d.did = w.did

donde DNAME = 'hardware'

Intersecarse

seleccione e.ename, e.age de emp e, trabaja w, d departamento

donde e.eid = w.eid y d.did = w.did

donde DNAME = 'software'

 


2) Considere el siguiente patrón de diseño de base de datos:

EMP (EMPNO, ENAME, JOB, HIREDATE, SAL, DEPTNO)

DEPT (DEPTNO, DNAME, LOC)

 

2.2) encontrar el número de meses la diferencia entre los empleados primero y el último de los empleados contratados (HIREDATE), así como el equivalente mensual de varios años

 

SELECT TIMESTAMPDIFF (MES, MIN (e.HIREDATE), MAX (e.HIREDATE)) meses,

TIMESTAMPDIFF (MES, MIN (e.HIREDATE), MAX (e.HIREDATE)) / 12 años

DE EMP correo

 

2.3) en el año 2017 se calcula el número de veces que cada día a la semana (domingo, lunes ...... sábado) está (completamente hecho con SQL, se puede dividir en varios pasos para completar, incluyendo la construcción de tablas de datos y resultados de la consulta)

 

crear semana mesa (

dateno identidad int (1,1) clave principal,

fecha y hora de archivos años,

varchar día de la semana (100)

)

 

delimitador $$

crear procedimiento insert_calendar (FECHA s_date, e_date FECHA)

empezar

declarar int insertdayofweek;

declarar varchar dateofweek (100);

 

mientras s_date <= e_date DO

dateofweek = DAYOFWEEK (s_date);

SI = 1 = dateofweek continuación insertdayofweek 'Domingo'

ELSE IF dateofweek = 2 entonces insertdayofweek = '星期一'

ELSE IF dateofweek = 3 entonces insertdayofweek = '星期二'

ELSE IF dateofweek = 4 entonces insertdayofweek = '星期三'

ELSE IF dateofweek = 5 entonces insertdayofweek = '星期四'

ELSE IF dateofweek = 6 entonces insertdayofweek = '星期五'

ELSE IF dateofweek = 7 entonces insertdayofweek = '星期六'

terminara si

INSERT INTO semana (dateInYear, de lunes a viernes) valores (s_date, dateofweek);

set = s_date + INTERVAL 1 DÍA;

extremo, mientras

 

terminar $$

delimitador

 

insert_calendar llamada ( '1/1/2017', '12/31/2017')

 

seleccionar los días de semana, count (*) del grupo por semana de lunes a viernes

ordenado por día de la semana

 

2.4) calcular (DEPTNO mismo valor de DEPTNO, ENAME y SAL el mismo departamento y cada empleado) de la diferencia entre los empleados de SQL. La diferencia es inmediatamente dentro de la plantilla actual y entre los diferentes sectores calculados a partir de la subsecuente personal (personal contratado esta nueva diferencia es N / S, no entendía lo que el significado de la frase)

 

seleccione A.DEPTNO, A.SAL, A.SAL - B.SAL como SAL1

desde(

  seleccionar a *, (@ i: = @i + 1). como ord_num de EMP a, (seleccionar @i: = 0) para d por DEPTNO,

desc HIREDATE

) Como una 

LEFT JOIN (

  seleccionar a *, (@ j: = @j + 1). como ord_num de EMP a, (seleccione @j: = 1) para c por DEPTNO,

desc HIREDATE

) Como B en A.ord_num = B.ord_num y A.DEPTNO = b.deptno

 


3) Considere un modo de diseño de base de datos, la hoja de impresión es el estado del pedido OrderStatus, y el estado oid clave primaria es una clave compuesta, el orden que comprende una pluralidad de estados, y el orden puede ser un caso en el que el estado de múltiples ocurrencias, como el reemplazo proceso.

Clientes (cid, CNAME, de la ciudad)

Órdenes (OID, cid, fecha)

OrderStatus (OID, estado, statusdate)

Por favor completar la consulta, lista de todas las órdenes no se han marcado como completado en los siguientes campos: Tiempo OID statusdate, CNAME, el estado final del estado del pedido y el estado de ajuste

 

seleccione c.cname, oo.oid, oo.`status`, oo.statusdate

de OrderStatus oo

izquierda se unen a órdenes o en o.oid = oo.oid

Los clientes se unen a la izquierda c en c.cid = o.cid

donde oo.statusdate en (

select max (statusdate) de OrderStatus t grupo por t.oid) y oo.status = '完成!';

 

seleccione c.cname, a. *

de OrderStatus a, (seleccionar oid, max (statusdate) como statusdate del grupo OrderStatus por

crianza) b

izquierda se unen a órdenes o en o.oid = b.oid

Los clientes se unen a la izquierda c en c.cid = o.cid

donde a.oid = b.oid y b.statusdate = a.statusdate y a.status = '完成!';


esquema relacional como parte de un centro comercial

tienda de mesa tienda (store_id, nombre_tienda, baja store_, room_no)

商品 表 de los productos básicos (com_id, com_name, com_price, store_id)

销售 员 表 saler (saler_id, saler_name, saler__gender, saler__age, store_id)

Factura única tabla cronológica (bill_id, saler_id, com_id, purchase_quantity, total_price, bill_time)

 

Entre ellos, la mesa tienda registra la información en el centro comercial tienda asentado, gestión de mercancías para la mercancía vendida en cada tienda, el vendedor para el personal de la tienda, corriendo registro de cuenta para una sola tabla para las transacciones centro de cajero, el tiempo de la factura se efectuó la transacción tiempo, como un tipo de fecha y hora, cada cuenta corriente contiene sólo un único producto, diferente de facturación para distintos productos, número de cantidad purchase_ es un entero positivo

 

(1) Al generar los registros de facturación, total_price que entrante consulta purchase_quantity com_ Identificación y asociado con el número y el precio unitario calculado, de modo que una inserción completa

 

crear inserto procedimiento (int saler_id_in, com_ id_in int, purchase_quantity_in int)

empezar

declarar com_price flotador

declarar total_price flotador

com_price = seleccionar com_price de los productos básicos, donde com_id = com_ id_in

total_price = com_price * purchase_quantity_in

 

insertar en factura (saler_id, com_id, purchase_quantity, total_price, bill_time) valores (saler_id_in, com_ id_in, purchase_quantity_in, total_price, ahora ())

final

 

establecer @saler_id_in = ...

establecer @com_ id_in = ...

Ser @purchase_quantity_in = ...

llamada inserción (@saler_id_in, @com_ id_in, @purchase_quantity_in)

 

(2) dueño de una tienda quiere mirar las ventas en tiendas del personal todos los días, consulte a store_id como "MCSA" el taller de todo el personal para completar la finalización de 11 de noviembre 2015 el número de transacciones, así como a cada empleado la facturación total

 

seleccionar conteo (total_price) como dealCount, suma (total_price) como la suma de s saler

izquierda se unen a Bill B sobre s.saler_id = b.saler_id

donde store_id = 'MCSA' y la fecha (bill_time) = '11/11/2015'

 

seleccione s.saler_id, s.saler_name, count (bill_id) como bill_count, suma (total_price) como pago_total del Saler s, Bill B

donde s.store_id = 'MCSA' y s.saler_id = b.saler_id y date_format (bill_time, '% Y-% m-% d') = '11/11/2015'

Unión

seleccione saler_id, saler_name, 0 como bill_count, 0 como pago_total del saler

donde store_id = 'MCSA' y no saler_id en (

seleccione saler_id de Bill donde date_format (bill_time, '% Y-% m-% d') = '11/11/2015')

 

administradores de centros comerciales quieren saber 11 de noviembre de, el año 2015 el volumen de transacciones que almacena el máximo, para preguntar acerca de su nombre de la tienda, ir de compras, donde la planta, número de la tienda, y la facturación del día.

 

seleccione store_id, nombre_tienda, store_floor, room_no, sumPrice de 

(Seleccione t.store_id, nombre_tienda, t.store_floor, t.room_no, suma (total_price) como sumPrice

desde la tienda t, saler s, Bill B

donde t.store_id = s.store_id

y s.saler_id = b.saler_id

y date_format (bill_time, '% Y-% m-% d') = '11/11/2015'

grupo por t.store_id) como T

donde T.sumPrice = max (T.sumPrice)

 

 


IV (pregunta código. 20 min fuera de la cuestión.)

教师 表 maestro (teacher_id, TEACHER_NAME, teacher_email, teacher_gender, teacher_title)

课程 表 curso (course_id, course_name, teacher_id, término, año)

学生 表 estudiante (student_id, student_name, student_grade, student_gender)

course_election electiva (ce_id, course_id, student_id, marcas)

 

(2) Con el fin de facilitar las investigaciones, desea crear un punto de vista curricular, incluyendo todos los cursos del primer semestre de 2015, todos los campos contienen planes de estudio, así como el número total de cada optativas del curso. Si hay una optativa, el número de electiva 0

 

Ver como crear

seleccione c.course_id, c.course_name, c.teacher_id, c.term, c.year, count (ce_id) como sumPeople del supuesto c

izquierda se unen ce course_election en ce.course_id = c.course_id

grupo por c.course_id

 

(3) Dean hizo algunos cambios ahora, cuando una puntuación de entrada en su defecto, necesidad de regular los resultados del tratamiento. Para una puntuación inferior a 60 puntos de acuerdo con el recuento de 60, utilizando un disparador para completar los requisitos respectivos

 

crear grade_trigger gatillo

antes de inserción o actualización en course_election

por cada fila

empezar

si new.marks <= 60 luego

new.marks = 60

terminara si;

final;

 


Cuenta con una base de datos interna de gestión de la información, su esquema relacional de la siguiente manera:

Trabajadores E (número de trabajo eno, nombre ename, sueldo salario, número de departamento DNO)

Proyecto P (número de artículo Pno, nombre del proyecto pname, cy la ciudad, responsable de la DNO número de departamento)

W de trabajo (número de trabajo del personal eno, número de artículo Pno, las horas de trabajo de tiempo)

Las familias de los trabajadores R (número de trabajo del personal eno, nombres de los miembros de la familia nombre, sexo familias de género)

 

4) Consulta de sus ingresos más alto salario anual de los trabajadores en todos los departamentos, el resultado devuelto número de trabajo y el departamento número de trabajadores en el sector de los rendimientos del trabajo anual más alta.

 

seleccione t.eno a partir de (

seleccione eno, ename, salario, DNO del orden del E por desc salario

) t

t.dno GROUP BY

 

seleccione eno de correo donde (ENO, salario) en (

seleccionar eno, max (salario) como sueldo de e grupo por DNO)

 

https://leetcode-cn.com/problems/department-highest-salary/


crear vistas am_sum (ayuda, año, mes, m_sum) como

seleccione la ayuda, año, mes, suma (Dols)

de O

grupo de ayuda, año, mes

 


El sistema tiene una tripulación de barcos de alquiler, estructura de la tabla es la siguiente:

Marineros (SID, Sname, calificación, edad);

Barcos (oferta, bname, color);

Reaserves (sid, bid, día)

 

2) identificar la edad de 35 años, de calificación> 5, y dentro de un mes, mientras que el nombre del marinero programado en el barco barco rojo y verde (8)

 

seleccione Sname de marineros s, Barcos b, r Reaserves

donde s.sid = r.sid y b.bid = r.bid y sysdate días <= 30 y color = 'rojo' y la calificación> 5

Intersecarse

seleccione Sname de marineros s, Barcos b, r Reaserves

donde s.sid = r.sid y b.bid = r.bid y sysdate días <= 30 y color = 'verde' y la calificación> 5

 

3) identificar todos el nombre del barco marinero programada (5 puntos adicionales)

 

seleccione s.name de marineros donde s.sid en (

seleccionar distintos (r.sid) del grupo r Reaserves por r.sid 

teniendo recuento (distinta (r.bid)) = (select count (*) de Barcos))

 

seleccione s.sname de marinero s

          No por donde sale (

           Seleccione nula de Reaserves r

             Donde r.sid = s.sid y no salidas (

                Seleccionar nula de Barcos b donde b.bid = r.bid))

 

 


VI (pregunta código. 20 min fuera de la cuestión.)

Supuestos: Circo está diseñado para estudiantes universitarios en un grupo de aplicaciones sociales de clase, se ha comprometido a permitir a los estudiantes a la experiencia de vida del campus más interesante y dinámica lateral, para crear una atmósfera natural armoniosa en el campus. A continuación, puede seguir con sus parejas pequeñas afines (Usuario), publicar dinámica en tiempo real (Momento), crear o unirse a una amplia variedad de círculos de interés interesantes (Grupo), Po en su estado de ánimo hermosa (rojo) en el círculo participar en una variedad de temas (tema) discusión

En el que las tablas de datos se realiza con entidades y atributos, incluyendo

 

_Id usuario ID de usuario, apodo apodo ,, avatar avatar, escuela número educado, hora de creación createdAt

Número de escuela _id, nombre de la escuela nombre

número momento novedad _id, autor ID de editor, contenido de texto, imágenes imagen, creación de tiempo createdAt

El pulgar de la novedad LikingMoment identificador de usuario ID de usuario, números de la novedad momentId, hora de creación createdAt

Número de tema tema de identificación, nombre el nombre del tema, el calor fiebre, createdAt hora de creación, actualizado actualiza

Temas mesa TopicRelation número de tema tópica, número momento momentId

 

En el que, de acuerdo con zumbido sostenida en el tiempo en proporción a la atenuación, el 10% de atenuación por 24 horas, menos de 24 horas no se atenúa. (Consejo: exponencial (xy), para volver xa la potencia y)

 

1) seleccionado el tema actual top ten de calor, incluyendo el número de tema, el nombre, la popularidad, el número de momentos de la participación, la hora de creación

 

seleccione t._id, t.name, 

potencia (0.9, TIMESTAMPDIFF (SEGUNDO, ahora (), t.createAt) / (24 * 3.600)) * calor como current_heart, 

count (tr.moment_id), t.createdAt de Tema t

unirse a TopicRelation tr en t._id = tr.topicId

grupo bt t._id

ordenado por límite current_heart 0,10

 

TIMESTAMPDIFF (unidad, hora de inicio, hora de finalización)


8) para participar en el número de trabajo de los trabajadores para recuperar todos los elementos;

 

seleccione eno de E donde NO EXISTE (

seleccionar * de P, donde NO EXISTE (

seleccionar * de W en la que W.eno = E.eno y W.pno = P.pno))

 

seleccione eno de E donde NO EXISTE (

seleccionar * de P, donde P.pno NO EN (

seleccione W.pno desde donde W = W.eno E.eno))

 

Número y el nombre 9) para recuperar todos los empleados del departamento Nº 3 participaron en el proyecto;

 

seleccionar PNO pname de P, donde NO EXISTE (

seleccionar * de E donde E.dno = 3 y NO EXISTE (

seleccionar * de W en la que W.eno = E.eno y W.pno = P.pno))

 

seleccionar PNO pname de P, donde NO EXISTE (

seleccionar * de E donde E.dno = 3 y E.eno NO EN (

seleccione W.eno desde donde W = W.pno P.pno))

 


Los clientes de pasajeros C (cid, CNAME, ciudad, discnt)

Un proveedor (ayuda, aname, de la ciudad)

producto básico P (pid, pname, cantidad, precio)

Pedidos sola O (numpedido, fechapedido, cid, ayuda, pid, qty, dols)

 

(SQL) consulta cada cliente una orden reciente, el número de cliente y devuelve los resultados de un reciente fecha de órdenes de compra y los resultados de salida en la fecha de compra descendente.

 

(SQL)

respuesta de referencia:

cid SELECT, fechapedido

De O O1

DONDE fechapedido> = ALL (

SELECCIÓN DE DONDE O2.orddate O2.cid De O2 = O1.cid)

ORDER BY DESC fechapedido;

 

respuesta de referencia:

cid SELECT, fechapedido

De O O1

DONDE NO EXISTE ( 

SELECCIONE *

De O O2

DONDE O2.cid = O1.cid y O2.orddate> O1.orddate)

ORDER BY DESC fechapedido;

 

Respuesta de Referencia 3:

cid SELECT, fechapedido

De O, (cid SELECT, max (fechapedido) de O GROUP BY cid) AS X (cid, m_date)

DONDE o.cid = X.cid y O.orddate = X.m_date

ORDER BY DESC fechapedido;

 

Respuestas 4:

cid SELECT, fechapedido

de O

DONDE NO numpedido IN (SELECT O1.ordno

De O O1, O2 O

DONDE O1.cid = O2.cid y O1.orddate <O2.orddate)

ORDER BY DESC fechapedido;


 

Publicados 137 artículos originales · ganado elogios 2 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/m0_37302219/article/details/104856124
Recomendado
Clasificación