- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Friss koncepciót hoz a Nothing Phone (3)
- Xiaomi 15 Ultra - kamera, telefon
- Íme az új Android Auto!
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Xiaomi 15 - kicsi telefon nagy energiával
- iPhone topik
- Azonnali mobilos kérdések órája
- Yettel topik
- Motorola Edge 60 és Edge 60 Pro - és a vas?
Új hozzászólás Aktív témák
-
tm5
tag
válasz
Apollo17hu #3451 üzenetére
Kb. fél éve nekem is volt egy ehhez nagyon hasonló problémám és ott is a 12c-re való átállás okozta a teljesítmény problémát.
Zeratul megoldása nekem is beugrott (mármint a hintek használata), csak nálunk az tilosés hozzá vagyok szokva, hogy ilyenkor át kell írnom a query-t.
Amúgy ahol lehet én is szétszedem subquery-kre a feladatot, mert akkor magam is jobban értem, hogy mit csinálok. Elég sok 4-800 soros query-vel dolgozom, másképp nem is érteném meg őket
-
tm5
tag
válasz
tvse1995 #3351 üzenetére
esetleg így: (adatok nélkül nem tudtam kipróbálni, de így tünt a legszimpatikusabbnak)
Select legfi.berlo_kulcs,
legfi.nev,
legfi.szuletesi_ido,
jarmukolcsonzes.kolcsonzes_kulcs,
jarmukolcsonzes.kiadas,
jarmukolcsonzes.visszavetel,
jarmukolcsonzes.jarmu_kulcs,
jarmu.marka,
jarmu.tipus
From
(Select berlo_kulcs
From ( Select Rank() Over (Partition By berlo_kulcs Order By szuletesi_ido Desc) rn, berlo_kulcs From berlo) Where rn In (2,3)) legfi
,jarmukolcsonzes
,jarmu
Where legfi.berlo_kulcs = jarmukolcsonzes.berlo_kulcs(+)
And jarmu.jarmu_kulcs(+) = jarmukolcsonzes.jarmu_kulcs -
tm5
tag
válasz
Petya25 #3201 üzenetére
Ajaj, akkor elég gyenge az a szerver... azért 2*600k-t joinolni nem kéne problémának lenni manapság.
Az a baj, hogy sortolni muszáj lesz, hogy ki tudd választani a dátum alapján az aktuális árat, Esetleg ha 2 dátum oszlop lett volna az ár táblában akkor egy "eladás_dátum beween tol and ig" kifejezéssel ki lehetett volna kapkodni a megfelelő sorokat sort nélkül is. -
-
tm5
tag
válasz
Ursache #3153 üzenetére
Hát inner join esetén csak azok a rekordok jönnek vissza amelyek mindkét táblában szerepelnek.
Szerintem inkább egy left outer join kellene ahol a baloldali tábla (a) olyan, hogy minden ügyfél benne van:SELECT *
FROM a
LEFT OUTER JOIN b ON (a.id = b.id)Ha pedig olyan a két tábla, hogy mindegyikben lehet olyan ügyfélrekord, ami nincs a másikban, akkor a LEFT helyére FULL-t kellene írni.
-
tm5
tag
válasz
concret_hp #3091 üzenetére
Hát egyszer muszáj lesz végignyalni az alkérdést, hogy megtalálja a minimumot, de mondjuk talán a sort-ot meg tudod úszni:
Tedd bele az alkérdésbe 8. oszlopnak a következőt:
min(egyikmezo) over (partition by 1) as min_ertek
és akkor a fő select-ben beírhatod a where-be hogy:
alkerdes.egyikmezo = alkerdes.min_ertek
-
tm5
tag
lehagytam egy záró zárójelet az NVL-es sor végéről, nem amiatt kapsz hibát? Mert amúgy szerintem ennek működnie kellene.
Amúgy nem lenne gond a mutatnál egy példát az adatokra, hogy mi van az egyes táblákban és hogy mi az elvárt select eredmény. 2 ember elég, egyiknél van kmh a másiknál nincs.
-
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.
-
tm5
tag
válasz
Peter Kiss #2981 üzenetére
jaja, abszolút egyetértek...
-
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
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?
-
tm5
tag
Én is LAG-gal csinálnám amire még lenne téve egy CASE WHEN, hogy
CASE
WHEN val = LAG(val) OVER ... THEN 0
ELSE 1
END xez menne egy subqueryben és erre már csak egy SUM(x) kell.
Nagyon szépen működik a LAG, nekem a multkor a legutolsó értékváltozás dátumát kellett meghatározni és így csináltam.
-
tm5
tag
válasz
DopeBob #2939 üzenetére
A neten találtam, valszeg más szeparátorral is működhet, csak nem vagyok magam nagyon otthon a regexp-es kifejezésekben:
select REGEXP_SUBSTR(s, '[^.]+', 1, 1) a,
REGEXP_SUBSTR(s, '[^.]+', 1, 2) b,
REGEXP_SUBSTR(s, '[^.]+', 1, 3) c,
REGEXP_SUBSTR(s, '[^.]+', 1, 4) d
from (select 'hello.how.are.you' s from dual) -
tm5
tag
válasz
pittbaba #2907 üzenetére
Bár látom, hogy ez egy régi feladvány, de mivel nem láttam rá megoldást azért így utólag csak javasolnék valamit:
Szóval minden ami a apro_category_customs-ből jönne azt 1 subquery-be menne amire rékerülne egy PIVOT.
Ez egy Oracle-s példa rá.Ennek illene sokkal gyorsabbnak lennie és a query is szebb lenne.
-
tm5
tag
válasz
Apollo17hu #2925 üzenetére
Hát az exact match-eket ugye elég hamar megkaphatod, de közelítő összehasonlítások már más tészta. Az IBM pl. nagyon nagy összegért adja bérbe cégeknek azt a szoftverét ami ezt csinálja. De még e fölött is általában működdik egy emberi csoport aki, egy bizonyos % fölött kézzel dönti el, hogy match, false positive vagy false negative az egyezés.
Valszeg valmilyen szintű közelítést össze lehet rakni, A kérdés az az, hogy a business mennyire tolerálja, hogy ha a hibás matchelés miatt nem érik el az ügyfelet.
Pl. Váci u. az Váci utca vagy Váci út?
Új hozzászólás Aktív témák
Hirdetés
- Dell Latitude 7410 Strapabíró Ütésálló Profi Ultrabook Laptop 14" -80% i7-10610U 16/512 FHD IPS MATT
- Eladó Lian Li O11D MINI-X gépház
- Lenovo ThinkPad P17 Tervező Vágó Laptop -50% 17,3" i7-10750H 32/512 QUADRO T1000 4GB
- FSP DAGGER PRO ATX3.0(PCIe5.0) 850W Sfx tápegység
- Eladó PNY GeForce RTX 4070 Ti SUPER 16GB OC XLR8
- BESZÁMÍTÁS! Gigabyte A620M R5 7500F 32GB DDR5 500GB SSD RX 6700XT 12GB Cooler Master CMP 520L 750W
- Asus ROG G20AJ - Intel Core i7-4790, GTX 980
- Napi 700 ft tól elvihető RÉSZLETRE BANKMENTES HP 840 G11 Ultra 5
- Telefon felvásárlás!! iPhone 14/iPhone 14 Plus/iPhone 14 Pro/iPhone 14 Pro Max
- BESZÁMÍTÁS! MSI MAG321QR 32 165Hz WQHD 1ms monitor garanciával hibátlan működéssel - használt
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest