Keresés


Toplista

Toplista
  • betöltés...

Magántanár kereső

Ha szívesen korrepetálnál, hozd létre magántanár profilodat itt.
Ha diák vagy és korrepetálásra van szükséged, akkor regisztrálj be és írd meg itt, hogy milyen tantárgyban!

Userlogin feladat SQL

501
Valakinek nincsen megoldva véletlen ez a feladat?

https://infojegyzet.hu/webszerkesztes/mysql/userlogin/
Jelenleg 1 felhasználó nézi ezt a kérdést.
0
Középiskola / Informatika

Válaszok

2
(Ez nem válasz, hanem hozzászólás a kérdéshez.)

Lényegesen egyszerűbb és gyorsabb volna adatokkal. Nincs meg az a userlogin.sql? Nekem azt mondja, hogy nem elérhető.
0

create table user (
    uazon integer primary key, -- uazon N6 a felhasználó azonosítója
    mail varchar(50), -- mail C50 a felhasználó e-mail címe
    nick varchar(20), -- nick C20 a felhasználó beceneve
    pw varchar(15), -- pw C15 a felhasználó jelszava
    udatum date, -- udatum DT a felhasználó regisztrációjának ideje
    irszam integer, -- irszam N4 a felhasználó lakcímének irányítószáma
    uipcim varchar(16), -- uipcim C16 a felhasználó regisztrációjának IP-címe
    holtcim tinyint -- holtcim N1 a "halott" felhasználói e-mail címek jelzése
);

create table login (
    uazon integer not null references user(uazon), -- uazon N6 a felhasználó azonosítója
    lip varchar(16), -- lip C16 a belépéskor használt gép IP-címe
    lbe date, -- lbe DT a belépés ideje
    bong varchar(2) -- bong C2 a belépéskor használt böngésző
);

insert into user
(uazon, mail , nick , pw , udatum , irszam, uipcim , holtcim) values
( 1, '[email protected]' , 'elso' , '3l50' , '2020-01-01', 1011 , '1.0.0.0', 0 ),
( 2, '[email protected]' , 'masodik' , 'j3l520' , '2020-02-02', 2011 , '2.0.0.0', 0 ),
( 3, '[email protected]' , 'harmadik' , 'h@rm@d1k', '2020-03-03', 1012 , '3.0.0.0', 1 ),
( 4, '[email protected]' , 'negyedik' , 'n36y3d1k', '2020-04-04', 2012 , '1.0.0.0', 0 ),
( 5, '[email protected]' , 'otodik' , 'j3l520' , '2020-05-05', 3012 , '2.0.0.0', 0 ),
( 6, '[email protected]' , 'hatodik' , 'h@t0d1k' , '2020-06-06', 1013 , '3.0.0.0', 1 ),
( 7, '[email protected]' , 'hetedik' , 'h3t3d1k' , '2020-07-07', 2013 , '1.0.0.0', 0 ),
( 8, '[email protected]' , 'nyolcadik' , 'j3l520' , '2020-08-08', 3013 , '1.0.0.0', 0 ),
( 9, '[email protected]', 'kilencedik', 't1tk05' , '2020-09-09', 4013 , '2.0.0.0', 1 ),
( 10, '[email protected]' , 'tizedik' , 't1tk05' , '2020-10-10', 1014 , '2.0.0.0', 0 );

insert into login
(uazon, lip , lbe , bong) values
( 1, '1.0.0.1' , '2020-01-01', 'fx'),
( 2, '2.0.0.1' , '2021-02-01', 'ie'),
( 3, '3.0.0.1' , '2022-03-01', 'o' ),
( 4, '4.0.0.1' , '2021-04-01', 'fx'),
( 5, '5.0.0.1' , '2022-05-01', 'ie'),
( 7, '7.0.0.1' , '2022-07-01', 'fx'),
( 10, '10.0.0.1', '2020-10-01', 'fx'),
( 2, '2.0.0.2' , '2021-02-02', 'ie'),
( 4, '4.0.0.2' , '2022-04-02', 'o' ),
( 6, '6.0.0.2' , '2021-06-02', 'fx'),
( 10, '10.0.0.2', '2022-10-02', 'o' ),
( 3, '3.0.0.3' , '2022-03-03', 'fx'),
( 6, '6.0.0.3' , '2020-06-03', 'ie'),
( 4, '4.0.0.4' , '2021-04-04', 'fx'),
( 5, '5.0.0.5' , '2022-05-05', 'o' ),
( 10, '10.0.0.5', '2021-10-05', 'fx');

-- 1. Hány felhasználó regisztrált és mikor történt az első, illetve az utolsó regisztráció?

select
count(*) "felhasználók száma",
min(udatum) "első regisztráció",
max(udatum) "utolsó regisztráció"
from user;

-- 2. A regisztrálók hány százaléka budapesti?

select
sum(floor(irszam / 1000) = 1) * 100 / count(*) "budapesti százalék"
from user;

-- 3. A felhasználók közül hányan használják a 'quickmail.org' levelezőrendszert?

select
count(*) "quickmail.org használók száma"
from user
where mail like '%@quickmail.org';

-- 4. A felhasználók közül hányan használják az egyes levelezőrendszereket?

select
substring(mail, locate('@', mail) + 1) "levelezőrendszer",
count(*) "felhasználók száma"
from user
group by substring(mail, locate('@', mail) + 1);

-- 5. Mely IP-címekről regisztrált háromnál több felhasználó?

select
uipcim "IP cím",
count(*) "felhasználók száma"
from user
group by uipcim
having count(*) > 3;

-- 6. Kik azok a felhasználók, akik esetleg ugyanazt a jelszót használják?

select
pw "jelszó",
count(*) "felhasználók száma",
group_concat(uazon) "felhasználók listája"
from user
group by pw
having count(*) > 1;

-- 7. Mely felhasználók nem léptek be sosem?

select
*
from user
where not exists(select * from login where login.uazon = user.uazon);

-- 8. A felhasználók hány százaléka lépett be legalább egyszer a regisztrációt követően?

select
sum(exists(select * from login where login.uazon = user.uazon)) * 100 / count(*) "belépett százalék"
from user;

-- 9. Ki volt az a 12 különböző felhasználó, aki utoljára használta az oldalt? Mi volt az utolsó belépési idejük?

select
uazon "felhasználó",
max(lbe) "utolsó belépés"
from login
group by uazon
order by max(lbe) desc
limit 12;

-- 10. Mely felhasználók nem léptek be az elmúlt egy évben (vagy sosem)?

select
uazon "felhasználó",
login.lbe "régebb mint 1 év vagy soha"
from user
left join (
    select
    uazon,
    max(lbe) lbe
    from login
    group by uazon
) login using (uazon)
where login.lbe < date_sub(current_date, interval 1 year)
or login.lbe is null;
0