- Xbox Series X|S
- Genshin Impact (PC, PS4, Android, iOS)
- War Thunder - MMO Combat Game
- Le Mans Ultimate
- Hosszabb bemutatót kapott a Flintlock: The Siege of Dawn
- PlayStation 5
- Path of Exile (ARPG)
- The Crew Motorfest - Jövő hónaptól végre Steamen is elérhető lesz
- Dragon's Dogma 2
- Konzolokról KULTURÁLT módon
Új hozzászólás Aktív témák
-
Petya25
addikt
MSSQL és nem ismeri a LAG függvényt.
bambano
Lehet nem fejtettem ki pontosan, 'b' minden első előfordulását szeretném megkapni egy időintervallumban. A 4 az állapotváltozásokra lehet hogy jó lenne a példámban, de a státus állapota többféle is lehet nem csak kettő. Ha úgy tetszik a b c d e értékek is előfordulhatnak.[ Szerkesztve ]
Antonio Coimbra de la Coronilla y Azevedo, bizony!
-
martonx
veterán
-
-
Petya25
addikt
válasz bambano #2957 üzenetére
A táblában a rekordok egymás utánisága sajna nem a kívánt formában van.
Az intervallumra szűkített listát átdobtam egy temp táblába a kívánt rendezettség mellett és oda szúrtam elé egy sorszámot. Az elshiftelt joinnal sikerült összehoznom amit szerettem volna.
Antonio Coimbra de la Coronilla y Azevedo, bizony!
-
weiss
addikt
Sziasztok, egy home projekten dolgozok, és nem boldogulok egy SELECT-tel. Adott két tábla:
TABLE A:
id value timestamp
---------------------
1 100 5
3 300 5
1 150 4
2 250 4
3 350 4
TABLE B:
id name
--------
1 apple
2 peach
3 orangeAz elvárt kimenet pedig ez volna:
id name value timestamp
-----------------------------
1 apple 100 5
2 peach 250 4
3 orange 300 5Vagy esetleg a peach(value) és peach(timestamp) lehet NULL is, ha úgy egyszerűbb. A lényeg, hogy minden B táblára adja ki az utolsó A táblás bejegyzést. Próbáltam OUTER JOIN-nal is, de az sem működött.
I did nothing, the pavement was his enemy!
-
bpx
őstag
Mivel nem írtál adatbáziskezelőt, automatikusan feltételezem, hogy szabad a pálya és lehet analitikus függvényeket használni (Oracle).
select
b.id, b.name, a.value, a.timestamp
from
b
join
(
select
id, value, timestamp
from
(
select
id, value, timestamp,
rank() over (partition by id order by timestamp desc) as rn
from
a
)
where
rn = 1
) a on (b.id = a.id); -
postgres:
ezen el tudsz indulni:
select * from a, (
select id,max(timestamp) as timestamp from a group by id) as c
where a.id=c.id and a.timestamp=c.timestamp;id | value | timestamp | id | timestamp
----+-------+-----------+----+-----------
1 | 100 | 5 | 1 | 5
3 | 300 | 5 | 3 | 5
2 | 250 | 4 | 2 | 4
(3 rows)[ Szerkesztve ]
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
updog
senior tag
Sziasztok,
SQL Serverről DBlinken Oracle-be áthozott adatok (nem, nincs más út ) integritását kellene ellenőriznem, Oracle oldalon találtam az alábbit, jónak tűnik, MSSQL alá tudtok hasonló function-t? Köszi!
"The DBMS_SQLHASH.GETHASH function applies one of the supported cryptographic hash algorithms to the result set of the SQL statement."
"Bocs, főnök, de én csak két emberben bízom. Az egyik én vagyok. Nem maga a másik." || "Hóhahó, mégis van graffaló!"
-
updog
senior tag
Igen, köszi, őrá én is ráakadtam, épp várom hogy a kolléga tesztelje a túloldalt (ebbe se menjünk bele, hogy miért így van )
De az MSDN-n amit találtam doksit, aszerint nem biztos hogy ez kell nekem. Az Oracle SELECT-et eszik, és a teljes resultset hash-ét dobja vissza, ez nem úgy tűnik. Persze még azt is tesztelem, hogy pl. mi van a LOB oszlopokkal, null-okkal, ilyesmi.
[ Szerkesztve ]
"Bocs, főnök, de én csak két emberben bízom. Az egyik én vagyok. Nem maga a másik." || "Hóhahó, mégis van graffaló!"
-
tm5
tag
Valójában nem értem, hogy niért lenne rá szükség. Van valami "zajos" elem valahol a két végpont közötti csatornában? Azért normálisan azt várnám el, hogy se az Oracle se az MSSQL ne torzítsa az adatot az átvitel során.
Egy dolog jut az eszembe ami problémát okozhat, az pedig az eltérő db character set encoding. Bár azért van az Oracle Gateway, hogy ezeket kezelje.
Én használtam Gateway-t bő 10 éve és ahogy emlékszem már akkor sem volt vele semmi gond.
Vagy az a gond, hogy valaki valahol belenyúlhat az adatokba?
-
updog
senior tag
"Valójában nem értem, hogy niért lenne rá szükség" A válasz (nem) meglepő: mert azt mondták
Komolyra fordítva: a projekt megköveteli, hogy igazoljuk, hogy az átvitel során az adatok nem változnak. Mivel van közte pár finomság (spéci MS típusok alfanumerikus és LOB szinten is), amik nincsenek konkrétan Oracleben, implicit konverzió is történik, ahol ha jól értem, nem garantált a konzisztencia (nyilván 99.99%-ban megoldja a driver, és random beleselectálva ezt is látjuk, de ha MS lennék, én se írnám le sehova hogy 100%.
+ugye példa nem bizonyít A biznisznek meg egy dokumentáció kell, ahol le van írva hogy 100%.
[ Szerkesztve ]
"Bocs, főnök, de én csak két emberben bízom. Az egyik én vagyok. Nem maga a másik." || "Hóhahó, mégis van graffaló!"
-
"Valójában nem értem, hogy niért lenne rá szükség.": mert a hálózatról nem feltételezheted, hogy hibamentes.
nekem ssh fölötti rsyncnél is volt már olyan, hogy hibásan töltött le fájlokat. nem nagyon gyakran, de azért ahhoz elég gyakran, hogy foglalkozni kelljen a témával.Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
lordring
aktív tag
Sziasztok! Van egy lekérdezésem, a következőképpen néz ki:
SELECT T0.[ItemCode], T0.[Dscription], T0.[Quantity], T0.[Price], T0.[Currency], T0.[LineTotal], T0.[TotalFrgn],T2.[CardName], T0.[ShipDate], T1.[CardCode] FROM CSI1 T0 INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode INNER JOIN OCRD T2 ON T1.CardCode = T2.CardCode WHERE T0.[ShipDate] >=[%0]AND T0.[ShipDate] <=[%1] '
A végén szeretném ha összegezné a T0.[LineTotal] és a T0.[TotalFrgn] értékeit a SUM fügvénnyel. Ezt hogy tudom megtenni?
-
lordring
aktív tag
Lehet, hogy rosszul fogalmaztam. A lekérdezés eredménye egy táblázat, ahol soronként vannak a rekordok, mindegyikben szerepel egy T0.[LineTotal] érték. A végén ezen értékeket szeretném összegezni, tehát vmi SUM(T0.LineTotal) alakú függvény lenne, de erre az Incorrect Syntax hibaüzenetet kapom.
-
lordring
aktív tag
Mivel nem tanultam SQL-t, így valamit tuti nem tisztán értek. Így fest most a lekérdezés:
SELECT T0.[ItemCode], T0.[Dscription], T0.[Quantity], T0.[Price], T0.[Currency], T0.[LineTotal], T0.[TotalFrgn],T2.[CardName], T0.[ShipDate], T1.[CardCode] FROM CSI1 T0 INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode INNER JOIN OCRD T2 ON T1.CardCode = T2.CardCode WHERE T0.[ShipDate] >=[%0]AND T0.[ShipDate] <=[%1] AND T2.CardName = '[%3]'
SELECT sum(T0.LineTotal)
Erre a "The multi-part identifier "T0.LineTotal" could not be bound" hibát kapom.
-
tm5
tag
válasz lordring #2979 üzenetére
Szóval valami ilyennek kéne lenni:
SELECT
T0.[ItemCode], T0.[Dscription], T0.[Quantity], T0.[Price], T0.[Currency], T0.[LineTotal], T0.[TotalFrgn],
T2.[CardName], T0.[ShipDate], T1.[CardCode]
FROM CSI1 T0
INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode
INNER JOIN OCRD T2 ON T1.CardCode = T2.CardCode
WHERE
T0.[ShipDate] >=[%0]AND T0.[ShipDate] <=[%1] AND T2.CardName = '[%3]'
UNION ALL
SELECT
0,'Total:', SUM(LineTotal), SUM(TotalFrgn), NULL, NULL, NULL
FROM
(
SELECT
T0.[ItemCode], T0.[Dscription], T0.[Quantity], T0.[Price], T0.[Currency], T0.[LineTotal], T0.[TotalFrgn],
T2. [CardName], T0.[ShipDate], T1.[CardCode]
FROM CSI1 T0
INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode
INNER JOIN OCRD T2 ON T1.CardCode = T2.CardCode
WHERE
T0.[ShipDate] >=[%0]AND T0.[ShipDate] <=[%1] AND T2.CardName = '[%3]'
)Mindamellett az a véleményem, általában a Total sort nem itt kéne számolni, hanem a kliens oldalt, hisz valszeg a megjelenítéskor úgyis másképp lesz formázva.
-
-
tm5
tag
válasz Peter Kiss #2981 üzenetére
jaja, abszolút egyetértek...
-
érdekelne a véleményetek a következő kérdésben:
postgresql
mint internet szolgáltató, statisztikáznom kell, hogy hány előfizetőm van, akinél csak tv, hány, akinél csak net és hány, akinél mindkettő van.
van egy táblám, amiben a szerződések vannak, ebben van ügyfélazonosító (customer_id) és szolgáltatás fajta azonosító (service_type_id).lehet ezt egy sql utasítással összegezni, esetleg néhány utasítással, vagy olvassam végig az egészet és programmal csináljam meg?
első körben gondoljuk végig, ha csak az számít, hogy internet, második körben azt is gondoljuk végig, ha azon belül számít, hogy melyik internet csomag.
tiaEgy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
válasz rum-cajsz #2984 üzenetére
nem igazán látom, hogy ez hogy is működne.
a sum(decode(jóérték))) helyett elég lenne a select count(*) where mezo=joertek, de nem ez a kérdés.
az a kérdés, hogy egy ügyfélnek egy rekordja van, ha csak egy szolgáltatásra fizet elő és kettő, ha mindkét félére.
erre kellene valami szép megoldás, mert barkács módon én is meg tudom oldani.Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
a releváns infó:
id | customer_id | service_type_id
-------+-------------+-----------------
10365 | 1 | 13
10328 | 2 | 13
10458 | 3 | 11
19714 | 3 | 13
10382 | 4 | 11
19532 | 4 | 13
10347 | 5 | 13
10369 | 6 | 13[ Szerkesztve ]
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
tm5
tag
válasz bambano #2987 üzenetére
select cc.szolgaltatas, COUNT(*)
from
(
select
customer_id,
row_number() over (partition by customer_id order by service_type_id) rnum,
case
when COUNT(*) over (partition by customer_id) = 2 then 'Mindketto'
when service_type_id = 11 then 'Internet'
when service_type_id = 13 then 'TV'
end szolgaltatas
from Table_1
) cc
where rnum=1
group by cc.szolgaltatasha egy sorba akarod az eredményt akkor viszont ahogy lejjebb írták, (SUM(DECODE...stb)), de a subquery ugyanaz.
-
-
válasz bambano #2987 üzenetére
közben az én agyam is járt, és eszembe jutott a régi jó gépikód. és kiderült, hogy van bitenkénti or aggregátor függvény.
select customer_id,bit_or(sid) from (
select customer_id, case
when service_type_id=11 then 1
when service_type_id=13 then 2
end sid from service) cc group by 1;ezt beágyazva még egy subselectbe, lehet grouppal darabszámot számolni.
kösz az ötletet, azon indultam el.
[ Szerkesztve ]
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
-
-
nagyúr
Üdv!
Előre leszögezem hogy nem nagyon vagyok jártas a témában,max annyira hogy láttam már msql db fájlt az androidos telefonomon.
Ezzel kapcsolatban lenne egy kérdésem
Rengeteg alkalmazásnál azt látom hogy az adatbázis fájlok túl informatívak,pl a Gmail alkalmazás adatbázis fájljai tartalmazzák azt hogy kivel,mikor,mit leveleztem.
Namost ugyebár nekem root-olt a telefonom,ez esettben van lehetőség arra hogy ezeket az adatbázis fájlokat titkositsam valahogy?...vagy magában az adatbázis fájlban ugyanezt?
mert így ha egy "jó szándékú" user bejut a rendszerbe akkor ezekből a fájlokból azt olvas ki amit nem akar.
Sql editor van a telefonomon.
-
Szmeby
tag
válasz aprokaroka87 #2997 üzenetére
Örülök, hogy akad olyan ember, aki rájött, a roottal milyen orbitális biztonsági rést nyitott a telefonján. De hát erről szól ez az egész, mindenki a résért csinálja.
Sajnálom, hogy nem tudok érdemben segíteni neked, de ugye arról van szó, hogy a fájlokhoz nem nyúlhatsz, hiszen a gmail appnak látnia kell, márpedig ha te lekódolod a tartalmát, azzal már nem fog tudni mit kezdeni. Esetleg a fájl hozzáféréssel lehetne játszani, hogy pl csak a gmail tudja őket listázni / olvasni, de hát mielőtt rootoltad, pont ezt csinálta.
Drasztikus megoldások persze vannak: unroot.
Vagy rootolt eszközön ne tarts érzékeny adatokat. Tudom, ez képtelenség. -
bpx
őstag
válasz lordring #2979 üzenetére
Az SQL Server is tudja már 2008-tól az ehhez szükséges aggregációs kiegészítéseket. Kicsit eltördeltem, hogy látszon mit módosítottam:
SELECT
T0.[ItemCode], T0.[Dscription], T0.[Quantity], T0.[Price], T0.[Currency],
sum(T0.[LineTotal]), -- eredeti helyett sum, ez valojaban csak az utolso sorban lesz osszeg
sum(T0.[TotalFrgn]), -- eredeti helyett sum, ez valojaban csak az utolso sorban lesz osszeg
T2.[CardName], T0.[ShipDate], T1.[CardCode]
FROM
CSI1 T0 INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode
INNER JOIN OCRD T2 ON T1.CardCode = T2.CardCode
WHERE
T0.[ShipDate] >=[%0]AND T0.[ShipDate] <=[%1] AND T2.CardName = '[%3]'
-- es itt jon a lenyeg
GROUP BY
GROUPING SETS((),(T0.[ItemCode], T0.[Dscription], T0.[Quantity], T0.[Price], T0.[Currency], T2.[CardName], T0.[ShipDate], T1.[CardCode] )); -
PumpkinSeed
addikt
Van egy 3.6 GB sql dump és a restore valami undorító sok ideig tart. Percona alatt megy a backup restore, és amiért sokat kellene ezt csinálni, mert van egy master slave replikáció és a Vagrant dev környezetbe akarjuk időnként átpakolni a slave adatait. Hogyan lehetne a lehető legnagyobb sebességet elérni a restore során?
"Akinek elég bátorsága és türelme van ahhoz, hogy egész életében a sötétségbe nézzen, elsőként fogja meglátni benne a fény felvillanását." - Kán