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;