Príklady použitia funkcie scd - výpočet výrazu. Príklady použitia funkcie SKD - vypočítajte výraz Celkový súčet sumy len zoskupením

Pozrime sa na príklad:

Klientovi je zaslaných niekoľko kusov tovaru s rôznymi zľavami. Musíte zobraziť hodnoty zliav pre každý produkt v prehľade a vypočítať priemernú zľavu. Vytvorme správu o systéme kontroly prístupu.
Pre všetky polia, pre ktoré potrebujeme zobraziť súčty, nastavíme na záložke “Zdroje” výraz (metódu) ich výpočtu. Pre pole „Zľava“ nastavte spôsob výpočtu ako „Priemerná“.

Vypracujeme správu:

Ako vidíte, súčet pre pole „Zľava“ sa vypočíta ako aritmetický priemer hodnôt polí, t.j. súčet všetkých hodnôt vydelený počtom hodnôt. Ale pretože Keďže objemy expedovaného tovaru s rôznymi zľavami sú rôzne, priemernú zľavu možno vypočítať aj iným spôsobom: napríklad ako pomer celkového množstva expedovaného tovaru s prihliadnutím na zľavu k celkovému množstvu expedovaného tovaru. Tu však vyvstáva otázka: ak môžete napísať vzorec na výpočet hodnôt polí podrobných záznamov v ACS, potom sa súčty vypočítajú automaticky podľa výrazu uvedeného na karte „Zdroje“ a tam, ako Ako sme už videli, „Priemer“ sa počíta ako aritmetický priemer zobrazených hodnôt, ako V tomto prípade mám vypočítať súčet v tomto stĺpci pomocou vlastného vzorca?
V skutočnosti to nie je ťažké. Za týmto účelom upravíme našu zostavu tak, že do nej pridáme potrebné polia, ktoré sa budú podieľať na výpočte, v našom prípade sú to „SumaSzľavou“ a „SumaZaCena“.

Aby sme „naučili“ ACS zobrazovať naše výsledky, podnikneme nasledujúce kroky:
1. na karte „Nastavenia“ priraďte názov zoskupeniu „“, napríklad „ResultSKD“, za týmto účelom vyvolajte kontextové menu zoskupenia a kliknite na „priradiť názov“;

2. na záložke “Layouts” pridáme “rozloženie hlavičky zoskupenia”, kde vyberieme predtým priradený názov “TotalSKD”;

3. nakreslíme čiaru layoutu, kde necháme všetky výsledky, ktorých výpočet nám vyhovuje, tak ako sú a na výpočet priemerného percenta zľavy napíšeme vzorec pre výpočet;

Ak je všetko v poriadku, tak pri zobrazení prehľadu sa pod ním zobrazia dva súčtové riadky, najskôr ten, ktorý sa generuje automaticky, potom ten, ktorý ste vytvorili.

Ak chcete ponechať výstup iba vášho celkového riadku, musíte na karte „Nastavenia“ v časti „Ďalšie nastavenia“ výstupu rozloženia deaktivovať výstup pre „Horizontálne rozloženie celkového súčtu“ a „Vertikálne rozloženie celkového súčtu“

Hárky programu Excel obsahujúce veľké množstvo informácií môžu niekedy vyzerať neprehľadne a dokonca aj ťažko čitateľné. Excel vám umožňuje zoskupovať údaje, aby ste mohli jednoducho skryť a zobraziť rôzne časti pracovného hárka. Okrem toho môžete pomocou príkazu zovšeobecniť rôzne skupiny Medzisúčet a dať štruktúru excelovému pracovnému hárku. V tejto lekcii sa pozrieme na oba tieto nástroje čo najpodrobnejšie a na jasných príkladoch.

Zoskupovanie riadkov a stĺpcov v Exceli

Ak chcete zrušiť zoskupenie údajov v Exceli, vyberte zoskupené riadky alebo stĺpce a potom kliknite na príkaz Zrušiť zoskupenie.

Ako skryť a zobraziť skupiny


Zhrnutie v Exceli

Tím Medzisúčet vám umožňuje automaticky vytvárať skupiny a používať základné funkcie ako SUM, COUNT a AVERAGE na uľahčenie sumarizácie. Napríklad príkaz Medzisúčet je schopný vypočítať náklady na písacie potreby podľa skupín vo veľkej zákazke. Príkaz vytvorí hierarchiu skupín, nazývanú aj osnova, na usporiadanie informácií v pracovnom hárku.

Pred použitím príkazu musia byť vaše údaje správne zoradené MedzisúčetĎalšie informácie nájdete v sérii lekcií Triedenie údajov v Exceli.

Vytvorenie medzisúčtu

V nasledujúcom príklade použijeme príkaz Medzisúčet určiť, koľko tričiek jednotlivých veľkostí (S, M, L a XL) je objednaných. Výsledkom je, že pracovný hárok programu Excel bude štruktúrovaný do skupín pre každú veľkosť tričiek a potom sa vypočíta celkový počet tričiek v každej skupine.


Zobrazte skupiny podľa úrovne

Pri sumarizácii medzisúčtov v Exceli je pracovný hárok rozdelený do rôznych úrovní. Medzi týmito úrovňami môžete prepínať, aby ste mohli upraviť množstvo zobrazených informácií pomocou obrysových ikon 1, 2, 3 na ľavej strane hárka. V nasledujúcom príklade budeme prepínať medzi všetkými tromi úrovňami štruktúry.

Hoci tento príklad zobrazuje iba tri úrovne, Excel umožňuje vytvoriť až 8 úrovní vnorenia.

Môžete tiež použiť ikony Šou alebo Skryť detaily skryť alebo zobraziť skupiny.

Odstránenie medzisúčtov v Exceli

Postupom času zmizne potreba medzisúčtov, najmä keď potrebujete inak usporiadať údaje v hárku programu Excel. Ak už medzisúčty nechcete vidieť, môžete ich odstrániť.


Ak chcete odstrániť iba skupiny a ponechať medzisúčty, použite položku Odstrániť štruktúru z rozbaľovacej ponuky príkazov Zrušiť zoskupenie.

Otázka Obídenie dotazu zoskupením, ako sa údaje zhromažďujú v dotaze s návrhom softvérových VÝSLEDKOV. Predpokladajme, že potrebujete zorganizovať cyklus, v ktorom by sa mal vytvoriť rad objednávok rozdelených podľa protistrán a dodacích adries. Ako to spraviť?
Odpoveď Píšeme žiadosť:

Žiadosť. Text = "VYBRAŤ | usOrderForShipment.Link AS Link, | usStatusDocuments.Status Stav AS, | Us Objednávka na odoslanie Protistrana AKO Protistrana, // Dodaciu adresu prikladáme v "EXPRESE", pretože v metaúdajoch je dodacia adresa reťazec neobmedzenej dĺžky a ak nie je prevedený na reťazec obmedzenej dĺžky, //potom to nebude možné použiť v konštrukcii "PO VÝSLEDKY". // a dostaneme chybovú správu ako " Neplatné pole pre zoskupenie" | EXPRESS(usShipmentOrder.DeliveryAddress AS ROW(350)) ASdeliveryAddress|OD | Informácie Register.usDocumentStatus AKO k námDocumentStatus | ĽAVÉ SPOJENIE Document.usOrderForShipment AS usOrderForShipment | Softvér usStatusDocuments.Document = usOrderForShipment.Link| KDE | Objednávka na odoslanie od nás| |OBJEDNÁVKA PODĽA | usDocumentStatus.Status.Order| VÝSLEDKY PODĽA | protistrana, | Adresa dodania";

Výsledkom tohto dopytu bude približne takáto množina údajov:

Dodávateľ 1

  • Dodacia adresa 1

Dodávateľ 1

  • Dodacia adresa 2

Protistrana2

  • Dodacia adresa 3

Teraz musíme získať tri polia:
— poradie 1, poradie 2, poradie 3
— poradie 4, poradie 5
- objednávka 6
Ak chcete získať tieto polia, musíte prejsť vyššie uvedeným dotazom „Podľa zoskupení s hierarchiou“:

SelectionMethod = Vynechanie výsledku dotazu. Podľa zoskupeníHIerarchy; Výsledok = požiadavka. Run(); FirstLevelSample = Výsledok. Vyber(Metóda výberu) ; Pri odbere vzoriek prvej úrovne. Next() LoopSecondLevel Sampling = výber prvej úrovne. Vyber(Metóda výberu) ; msvOrders. Jasný() ; // vymazané pred pridaním prvého do zoznamu Pri výbere druhej úrovne. Next() Slučka // v rámci každej úrovne hierarchie sú objednávky zoradené: „Vytvorené“, „Prebieha“, „Rozpracúva sa“, „Pripravené na odoslanie“ (v tomto poradí je objednávka nastavená v enumerácii) Ukážka tretej úrovne = Ukážka druhej úrovne. Vybrať(VynechaťVýsledokDopytu. Priamy) ; // parameter nemusí byť odovzdaný, predvolená metóda vzorkovania je priama Pri výbere tretej úrovne. Next() Slučka // v rámci každej úrovne hierarchie sú objednávky zoradené: „Vytvorené“, „Prebieha“, „Rozpracúva sa“, „Pripravené na odoslanie“ (v tomto poradí je objednávka nastavená v enumerácii) msvOrders. Add(ThirdLevelSelection. Link) ; EndCycle ; Generovat SelectionByOrder(msvOrders) ; // tu dostaneme požadované polia v slučke jeden po druhom: [poradie 1, poradie 2, poradie 3], potom [poradie 4, poradie 5] a [poradie 6] EndCycle ; EndCycle ;

Poznámka. Vo vnútri každého poľa bude fungovať konštrukcia “ORDER BY USDocumentStatus.Status.Order”, t.j. objednávky budú zoradené podľa stavu v každom z výsledných polí.

Pomoc pri výpočte výsledkov dotazu z popisu v pomocníkovi konfigurátora

Výpočet súčtu dopytov

Klauzula TOTAL vám umožňuje určiť, ktoré súčty sa musia v dotaze vypočítať. Pri výpočte súčtov sa hodnoty agregovaných funkcií vypočítajú na základe vzoriek s rovnakými hodnotami poľa - kontrolné body. Súčty sa pridajú k výsledku dotazu ako riadky súčtu.

Postup výpočtu výsledkov dotazu je opísaný v súlade s nasledujúcimi pravidlami:

<Описание итогов>

<Итоги> [<Список агрегатных функций>]

<Итоги>

VÝSLEDKY [<Список итоговых_полей>] OD [GENERÁLNE]<Список контрольных точек>

<Список итоговых_полей>

<Итоговое_поле> [,<Список_итоговых_полей> [, …]]

<Итоговое_поле>

<Агрегатная_функция> | <Выражение>[[AKO]<Псевдоним_поля>]

<Список контрольных точек>

<Контрольная точка> [, <Контрольная точка> [, …]]

<Контрольная точка>

<Выражение>[[LEN] HIERARCHIA] | [PERIODS(druhá | minúta | hodina | deň | týždeň | mesiac | štvrťrok | rok | desaťročie | polrok
[,<Литерал типа DATE> | <Идентификатор параметра>]
[,<Литерал типа DATE> | <Идентификатор параметра>])] [[AKO] Alias ​​poľa]

Popis výsledkov začína požadovaným kľúčovým slovom VÝSLEDKY.

<Список агрегатных функций>obsahuje zoznam agregovaných funkcií, ktoré musia byť vypočítané vo výsledkoch. Súhrnné funkcie sú zahrnuté v .

Okrem všeobecných súčtov môžete určiť výpočet súčtov podľa kontrolných bodov. Ak to chcete urobiť, musíte zadať požadovaný softvér kľúčových slov<Список контрольных точек>. Každý<Контрольная точка>obsahuje<Выражение>, vypočítané pri vykonaní dotazu. Pre každú kombináciu hodnôt týchto výrazov sa vypočíta celkový počet riadkov a pridá sa k výsledku dotazu.

Ak je kontrolným bodom pole - čiastkový prvok účtovného registra, potom pri prijímaní súčtu pre tento kontrolný bod budú hodnoty NULL ignorované.

Agregátne funkcie jazyka dotazu

Jazyk dotazu poskytuje agregačné funkcie, ktoré sa používajú na zoskupovanie výsledkov dotazov a výpočet súčtov. Súhrnné funkcie sú navrhnuté tak, aby sumarizovali hodnoty zadaného parametra. Sú definované nasledujúce agregačné funkcie:

<Агрегатная функция>

SUM (<Выражение>) |
PRIEMERNÝ (<Выражение>) |
MINIMÁLNE (<Выражение>) |
MAXIMÁLNE (<Выражение>) |
MNOŽSTVO ([ODLIŠNÉ]<Выражение> | *)

Príklad:

Vyberte si
Faktúra.Nomenklatúra.Názov,
Suma (Invoice.Amount) As Amount,
Priemer (Invoice.Amount) As Average,
Maximum (Invoice.Amount) As Maximum,
Minimum (Invoice.Amount) Ako minimum,
Množstvo (Invoice.Amount) Ako množstvo

Od

Zoskupiť podľa
Faktúra.Nomenklatúra

Výsledky Všeobecné

Výsledok dotazu:

názov Sum Priemerná Maximálne Minimum Kolic
265 955,45 12 511,12 40 000,23 555 8
Detské nohavice 28 500,22 9 500,07 15 000 3 000 3
Tričko "Cowgirl" 24 000 8 000 16 000 4 000 3
Džínsy pre ženy 63 555 6 355,5 30 000 555 10
Detský svetrík 6 400 6 400 6 400 6 400 1
Umývadlo "Lily" 60 000,23 30 000,115 40 000,23 20 000 2
Moydodyr "Akvárium" 65 500 21 833,33 40 000 8 000 3
Mixér "Ultra" 15 000 15 000 15 000 15 000 1
Kuchynský robot Krups 3 000 3 000 3 000 3 000 1

Agregačné funkcie možno použiť v zozname výberových polí, klauzulách HAVING, TOTAL, ORDER BY.

Agregátna funkcia SUM

Funkcia vypočíta aritmetický súčet všetkých hodnôt polí zahrnutých do výberu.

Ako parameter funkcie možno zadať iba polia obsahujúce číselnú hodnotu.

Ak pole nemôže obsahovať číselné hodnoty, pri použití funkcie SUM na toto pole sa vygeneruje chyba. Ak pole môže obsahovať číselné hodnoty (má zložený dátový typ), túto funkciu možno použiť na takéto pole. Ak sa však medzi hodnotami poľa vo výbere vyskytne nečíselná hodnota (iná ako hodnoty NULL), spôsobí to chybu.

Agregátna funkcia AVERAGE

Funkcia vypočíta priemernú hodnotu všetkých hodnôt polí zahrnutých vo vzorke.

Ako parameter funkcie môžete zadať iba odkazy na polia obsahujúce číselnú hodnotu.

Ak pole nemôže obsahovať číselné hodnoty, pri použití funkcie AVERAGE na toto pole sa vygeneruje chyba. Ak pole môže obsahovať číselné hodnoty (má zložený dátový typ), túto funkciu možno použiť na takéto pole. Ak sa však medzi hodnotami poľa vo výbere vyskytne nečíselná hodnota (iná ako hodnoty NULL), spôsobí to chybu.

Agregátna funkcia MINIMÁLNE

Funkcia vypočíta minimálnu hodnotu všetkých hodnôt polí zahrnutých do výberu.

Pri určovaní minimálnej hodnoty platia pravidlá pre porovnávanie hodnôt popísaných v .

Súhrnná funkcia MAXIMÁLNE

Funkcia vypočíta maximálnu hodnotu zo všetkých hodnôt polí zahrnutých do výberu.

Ako parameter funkcie môžete zadať odkazy na polia obsahujúce hodnoty akéhokoľvek typu.

Pri určovaní maximálnej hodnoty platia pravidlá pre porovnávanie hodnôt popísaných v .

Súhrnná funkcia QUANTITY

Funkcia počíta počet hodnôt parametrov zahrnutých vo vzorke. Na rozdiel od iných agregačných funkcií funkcia QUANTITY umožňuje tri použitia.

  • Po prvé, funkcia vám umožňuje spočítať počet hodnôt zadaného poľa, ktoré nie sú NULL.
  • Po druhé, funkcia vám umožňuje spočítať počet rôznych hodnôt zadaného poľa, ktoré sa nerovnajú NULL. Ak to chcete urobiť, pred špecifikáciou poľa musíte zadať kľúčové slovo VARIOUS.
  • Po tretie, funkcia vám umožňuje spočítať počet riadkov vo výsledku dotazu. Ak to chcete urobiť, musíte zadať hviezdičku „*“ ako parameter funkcie.

Ako parameter funkcie môžete zadať odkazy na polia obsahujúce hodnoty akéhokoľvek typu.

Príklad:

VYBERTE SI
Množstvo (*) ako súčet,
Množstvo (rôzne faktúry. Nomenklatúra) Rôzne

Od
Document.Invoice.Composition As Invoice

Výsledok dotazu:

Celkom Rôzne
24 8

Výpočet súčtov

Ak chcete vypočítať súčty pre celú tabuľku, slovo GENERAL by malo byť špecifikované v klauzule TOTAL. V tomto prípade sa hodnoty agregačných funkcií vypočítajú pre všetky záznamy tabuľky.

Príklad:



CELKOVÁ SUMA (MNOŽSTVO) PODĽA SPOLU

Výsledok dotazu:

Produkt Množstvo číslo Príjemca
238
Klepnite 10 RNk-1 Uryupinsktorg
Klepnite 8 RNk-3 Mag. "majster"
Klepnite 44 RNk-4 Mag. "Obor"
Klepnite 22 RNk-5 Uryupinsktorg
Vantus 5 RNk-1 Uryupinsktorg
Vantus 1 RNk-3 Mag. "majster"
Vantus 14 RNk-4 Mag. "Obor"
Tabuľka 1 RNk-1 Uryupinsktorg
Tabuľka 15 RNk-2 Mag. "nábytok"
Tabuľka 10 RNk-4 Mag. "Obor"
Stolička 55 RNk-2 Mag. "nábytok"
Stolička 5 RNk-3 Mag. "majster"
Stolička 32 RNk-4 Mag. "Obor"
Stolička 16 RNk-5 Uryupinsktorg

Booleovské výrazy v dopytovacom jazyku

V dotazovacom jazyku sa logické výrazy používajú v operáciách výberu a podmienkach výberu:

<Логическое выражение>

<Выражение> |
<Выражение> <Операция сравнения> <Выражение> |
<Выражение>[NIE] V [HIERARCHII] (<Список значений> | <Массив значений>) |
<Выражение>[NIE] V [HIERARCHII] (<Описание запроса>) |
<Выражение>[NIE] MEDZI<Выражение>A<Выражение> |
<Выражение>JE [NIE JE] NULL |
<Выражение>LINK<Имя таблицы> |
<Выражение>[NIE AKO<Литерал типа СТРОКА>
[ŠPECIÁLNA POSTAVA<Литерал типа СТРОКА>]

<Операция сравнения>

> | < | = | >= | <= | <>

<Список значений>

<Выражение>[, <Выражение> [, …]]

Logický výraz môže byť:

Pri porovnávaní hodnôt sa používajú pravidlá porovnávania hodnôt popísané nižšie.

Pravidlá porovnávania hodnôt

Pretože dopytovací jazyk môže porovnávať hodnoty rôznych typov, sú definované pravidlá, ako sa porovnávajú dve hodnoty. Tieto pravidlá sa používajú na:

  • porovnávanie hodnôt v porovnávacích operátoroch;
  • určenie maximálnych a minimálnych hodnôt v agregovaných funkciách MINIMUM a MAXIMUM;
  • zoradenie záznamov výsledkov dotazu podľa poradia uvedeného v klauzule ORDER BY.

Ak sa typy hodnôt navzájom líšia, potom sa vzťahy medzi hodnotami určujú na základe priority typov:

  • typ NULL (najnižšia);
  • typu Boolean;
  • typ Číslo;
  • typ Dátum;
  • typ String;
  • referenčné typy.

Vzťahy medzi rôznymi typmi odkazov sa určujú na základe interných referenčných čísel tabuliek zodpovedajúcich konkrétnemu typu.

Ak sú typy údajov rovnaké, hodnoty sa porovnajú podľa nasledujúcich pravidiel:

  • pre booleovský typ je hodnota TRUE väčšia ako hodnota FALSE;
  • typ Číslo má obvyklé pravidlá porovnávania čísel;
  • pre typ Dátum sú skoršie dátumy menšie ako neskoršie;
  • v prípade typu porovnávacieho reťazca sa porovnanie vykoná v súlade so stanovenými národnými charakteristikami databázy bez zohľadnenia medzier na konci;
  • referenčné typy sa porovnávajú na základe ich hodnôt (číslo záznamu atď.);
  • Porovnávanie polí neobmedzenej dĺžky nie je povolené (reťazce neobmedzenej dĺžky, ValueStorage, ValueType pole z tabuľky charakteristických typových plánov).

Dôležité! Akákoľvek operácia porovnania medzi dvoma hodnotami, ktorá zahŕňa aspoň jednu hodnotu NULL, vedie k výsledku podobnému FALSE.

Operátor zhody hodnoty

Formulár operátora B na kontrolu zhody s jedným z uvedených

Operátor B vám umožňuje skontrolovať, či sa hodnota výrazu zadaného napravo zhoduje s niektorou z hodnôt opísaných naľavo. Ak sa zhoduje aspoň s jedným, výsledok operátora bude PRAVDA, inak bude NEPRAVDA. Aplikácia NEVRÁTA činnosť operátora. Porovnanie hodnôt sa vykonáva podľa pravidiel opísaných v.

Príklad:

Vyberte si

Kde
Adresár.Nomenklatúra.Názov rodiča
B („domáce spotrebiče“, „kancelárske vybavenie“)

Formulár operátora B na kontrolu členstva v hierarchii

V prípade adresárov je možné vykonať aj kontrolu členstva v hierarchii. Výsledok operátora IN HIERARCHY bude TRUE, ak hodnota výrazu vľavo je odkazom na prvok adresára a je zahrnutá v množine hodnôt vpravo alebo hierarchicky patrí do nejakej skupiny obsiahnutej v tejto množine:

Príklad:

// Odkaz sa odovzdá požiadavke ako parameter skupiny
// do ľubovoľnej skupiny adresára Nomenklatúra.

Vyberte si
Adresár.Nomenklatúra.Názov

Sada hodnôt, ktorých zhoda sa má skontrolovať, môže zahŕňať aj výsledok dotazu. V tomto prípade musíte napravo od operátora B uviesť popis žiadosti.

Príklad:

Vyberte si
Adresár.Nomenklatúra.Názov

Forma operátora B na kontrolu, či sa hodnota zhoduje s jedným z výsledkov dotazu

Príklad použitia tohto operátora by bol nasledujúci:

Príklad:


VYBERTE SI
Produkty.Názov
OD
Adresár.Produkty AS Produkty
KDE
Produkty. Odkaz B
VYBERTE SI
Výdavok InvoiceComposition.Product
OD

)

Výsledok dotazu:

Ak chcete získať opačný výsledok, teda ak chcete zistiť, že hodnota sa nezhoduje so žiadnym z výsledkov dotazu, dotaz vyzerá takto:

Príklad:

// Vyberte názvy tovarov, ktoré boli prítomné vo faktúrach
VYBERTE SI
Produkty.Názov
OD
Adresár.Produkty AS Produkty
KDE
Produkty. Odkaz NIE JE VNÚTORNÝ
VYBERTE SI
Výdavok InvoiceComposition.Product
OD
Document.Expense Invoice.Composition AS Expense InvoiceComposition
)

Výsledok dotazu:

Všimnite si, že z dotazu operácie B je možné pristupovať k poliam tabuľky, ktoré sa vyskytli v externom dotaze pred objavením sa operácie.

Príklad:

// Vyberte názvy tovarov, ktoré boli prítomné vo faktúrach
VYBERTE SI
Produkty.Názov
OD
Adresár.Produkty AS Produkty
KDE
Produkty. Odkaz B
VYBERTE SI
Výdavok InvoiceComposition.Product
OD
Document.Expense Invoice.Composition AS Expense InvoiceComposition
KDE
Výdavok Composition.Product = Products.Link
)

Výsledok dotazu:

Operátor na kontrolu, či je hodnota v rozsahu

Operátor BETWEEN vám umožňuje skontrolovať, či hodnota výrazu zadaného napravo od neho je v rozsahu špecifikovanom naľavo (spolu s hranicami rozsahu). Ak je zahrnutá, výsledok operátora bude PRAVDA, inak - NEPRAVDA. Aplikácia NEVRÁTA činnosť operátora. Porovnanie hodnôt sa vykonáva podľa pravidiel opísaných v.

Príklad:

Vyberte si


Kde
Adresár.Nomenklatúra.Nákupná cena OD 100 DO 1000

Operátor testu NULL

Operátor IS NULL vám umožňuje otestovať hodnotu výrazu naľavo od neho na hodnotu NULL. Ak je hodnota NULL, výsledok operátora bude TRUE, inak bude FALSE. Aplikácia NEVRÁTA činnosť operátora.

Príklad:

Vyberte si
Directory.Nomenclature.Name,
Adresár.Nomenklatúra.Nákupná cena
Kde
Directory.Nomenclature.PurchaseCena Áno NULL

Operátor overenia referenčnej hodnoty

Operátor REFERENCE vám umožňuje skontrolovať, či hodnota výrazu zadaného napravo od neho je odkazom na tabuľku zadanú naľavo. Ak áno, výsledok operátora bude PRAVDA, inak - NEPRAVDA. Dereferencovanie tabuľky je popísané v časti „Dereferencovanie poľa“.

Príklad:

Vyberte si
Directory.Nomenclature.Name,
Adresár.Nomenklatúra.Merná jednotka
Kde
Directory.Nomenclature.Unit of Measurement Link Directory.Units of Measurement

Operátor reťazca zodpovedajúceho vzoru

Operátor PODOBNÉ vám umožňuje porovnať hodnotu výrazu zadaného naľavo od neho s reťazcom vzoru zadaným napravo. Hodnota výrazu musí byť typu string. Ak sa hodnota výrazu zhoduje so vzorom, výsledok operátora bude TRUE, inak bude FALSE.

Nasledujúce znaky v reťazci šablóny sú servisné znaky a majú iný význam ako znak reťazca:

  • % (percento): sekvencia obsahujúca ľubovoľný počet ľubovoľných znakov
  • _ (podčiarkovník): jeden ľubovoľný znak
  • […] (jeden alebo viac znakov v hranatých zátvorkách): akýkoľvek jednotlivý znak uvedený v hranatých zátvorkách
    Enumerácia môže obsahovať rozsahy, napríklad a-z, čo znamená ľubovoľný znak zahrnutý v rozsahu, vrátane koncov rozsahu.
  • [^...] (v hranatých zátvorkách znak záporu, za ktorým nasleduje jeden alebo viacero znakov): každý jeden znak iný ako tie, ktoré sú uvedené za znakom záporu

Akýkoľvek iný symbol znamená sám seba a nenesie žiadnu dodatočnú záťaž.

Ak jeden z uvedených znakov musí byť napísaný ako samotný, potom mu musí predchádzať<Спецсимвол>. Ja sám<Спецсимвол>(akýkoľvek vhodný znak) je definovaný v rovnakom príkaze za kľúčovým slovom SPECIAL CHARACTER.

Napríklad vzor „%ABV[abvg]_abv%“ ŠPECIÁLNY CHARAKTER „“ znamená podreťazec pozostávajúci zo sekvencie znakov:
písmená A; písmená B; písmená B; jedna číslica; jedno z písmen a, b, c alebo d; podčiarknuť; písmená a; písmená b; písmená v.

Okrem toho môže tejto sekvencii predchádzať ľubovoľná množina znakov.

Zhrnutie hierarchie

Je možné vypočítať súčty podľa hierarchie. Ak to chcete urobiť, za názvom poľa, pre ktoré sa vypočítavajú súčty, musíte zadať kľúčové slovo HIERARCHIA. V dôsledku toho sa vypočítajú súčty podľa kontrolných bodov a súčty podľa hierarchie pre kontrolné body.

Príklad:

SELECT Doc.Item, Doc.Quantity, Doc.Link.Number, Doc.Link.Recipient
OD Dokument.Faktúra.Zloženie Ako Doc
OBJEDNÁVKA PODĽA Doc.Produktu
VÝSLEDKY MNOŽSTVO (MNOŽSTVO) SOFTVÉR Dok. HIERARCHIA produktov

Výsledok dotazu:

Produkt Množstvo číslo Príjemca
Inštalatérstvo 104
Klepnite 84
Klepnite 10 RNk-1 Uryupinsktorg
Klepnite 8 RNk-3 Mag. "majster"
Klepnite 44 RNk-4 Mag. "Obor"
Klepnite 22 RNk-5 Uryupinsktorg
Vantus 20
Vantus 5 RNk-1 Uryupinsktorg
Vantus 1 RNk-3 Mag. "majster"
Vantus 14 RNk-4 Mag. "Obor"
Nábytok 134
Tabuľka 26
Tabuľka 1 RNk-1 Uryupinsktorg
Tabuľka 15 RNk-2 Mag. "nábytok"
Tabuľka 10 RNk-4 Mag. "Obor"
Stolička 108
Stolička 55 RNk-2 Mag. "nábytok"
Stolička 5 RNk-3 Mag. "majster"
Stolička 32 RNk-4 Mag. "Obor"
Stolička 16 RNk-5 Uryupinsktorg

Príklad:

SELECT Doc.Item, Doc.Quantity, Doc.Link.Number, Doc.Link.Recipient
OD Doklad.Výdavok Faktúra.Zloženie Doc
OBJEDNÁVKA PODĽA Doc.Produktu
MNOŽSTVO VÝSLEDKOV (MNOŽSTVO) LEN PODĽA HIERARCHIE DOKUMENTOV

Výsledok dotazu:

Produkt Množstvo číslo Príjemca
Inštalatérstvo 104
Klepnite 10 RNk-1 Uryupinsktorg
Klepnite 8 RNk-3 Mag. "majster"
Klepnite 44 RNk-4 Mag. "Obor"
Klepnite 22 RNk-5 Uryupinsktorg
Vantus 5 RNk-1 Uryupinsktorg
Vantus 1 RNk-3 Mag. "majster"
Vantus 14 RNk-4 Mag. "Obor"
Nábytok 134
Tabuľka 1 RNk-1 Uryupinsktorg
Tabuľka 15 RNk-2 Mag. "nábytok"
Tabuľka 10 RNk-4 Mag. "Obor"
Stolička 55 RNk-2 Mag. "nábytok"
Stolička 5 RNk-3 Mag. "majster"
Stolička 32 RNk-4 Mag. "Obor"
Stolička 16 RNk-5 Uryupinsktorg

Zdá sa, že nič nie je jednoduchšie, no je tu problém s jasnou definíciou.
Takže.

Skupina (zoskupenie) - kolaps záznamy v skupina Autor: skupina poliach(polia s rovnakou hodnotou).
Príklad. Potrebujeme vedieť celkový počet produktov pre istý sklad (...spolu 999 ton..). Každý pohyb je zaznamenaný v registri a aj jednoduchá požiadavka z dvoch polí (Sklad a Množstvo) vygeneruje výber z mnohých záznamov s rovnakou hodnotou poľa Sklad a rôznymi hodnotami poľa Množstvo.
Zbaliť (zoskupiť) zostatky podľa poľa Sklad – ide o získanie celkového množstva tovaru v tomto sklade.
Z toho vyplýva potreba (pre náš príklad, ale nie nevyhnutne všeobecne) počítať agregát funkcie (vytvoriť jednu hodnotu pre špecifickú skupinu polí tabuľky) podľa skupinového poľa (v podmienkach nástroja na tvorbu dopytov - Pole súčtu).
V našom príklade- zoskupte pole Sklad, a vypočítajte agregovanú funkciu pomocou poľa Množstvo - dostaneme SPOLU MNOŽSTVO všetkého tovaru na sklade.
Pretože Keďže jednoduché dotazy sú veľmi zriedkavé, vo všetkých ostatných prípadoch pri použití zoskupovania budú zoskupené Všetky polia dotazu (okrem Summarizable) a výber sa zredukuje (zbalí) len na tých záznamoch, v ktorom sú všetky polia skupiny rovnaké (rovnaký sklad, rovnaký produkt, rovnaká veľkosť produktu - tieto záznamy sú zbalené, ak je aspoň niečo iné, nie sú).

Výsledky(tzv sú bežné)- ďalšie riadky v dôsledku žiadosti obsahujúcejsúčty pre špecifikované polia a zoskupenia (tzv. medzisúčty).
Všeobecné výsledky - riadok ako výsledok dotazu s hodnotou súčtu pre všetky záznamy.

Výsledky podľa skupín - hodnoty agregovaných funkcií podľa skupinové polia (polia s rovnakou hodnotou).

Rozdiely žiadosť odfrakcie(GROUP BY) od žiadosť odvýsledky podľa skupín.

V prvom prípade sa vo výsledku dotazu zobrazia iba celkové riadky. V príklade je pole skupiny nomenklatúra:

Druhá obsahuje výsledky a počiatočné záznamy. Dôvod je v definícii (výsledky "nezrútiť sa"údaje a pridať riadky)! V príklade je pole skupiny nomenklatúra:

Dôležité! Vo svojom dopyte nie je potrebné používať zoskupovanie aj súčty! Všetko závisí od toho, čo potrebujeme...

Poradie zoskupení v dotaze so súčtom zoskupení je dôležité, pretože výsledky sú vypočítané v poradí.

Zhrnutie hierarchie. Ak je pole zoskupenia odkazom na adresár, potom na výpočet súčtu podľa skupín adresára (alebo rodičovských prvkov, ak adresár nemá žiadne skupiny), musíte zadať kľúčové slovo HIERARCHY. V tomto prípade sa k výsledku pridajú záznamy so súčtom pre úrovne hierarchie adresárov.

Dôležité! Jazyk dotazu umožňuje použitie rôznych súčtov spolu v jednom dotaze (všeobecnom, zoskupení a hierarchickom).

Syntax pre prácu so súčtami vo výbere z výsledku dotazu

metóda RecordType().
Príklad:
Ak Ukážka . PostType() = RequestRecordType. TotalByGrouping Potom

Ďalej;
koniec Ak;

Majú rovnakú úlohu – vykonávať matematické alebo štatistické operácie na vzorových údajoch. Existujú však aj významné rozdiely:

  1. Výsledky pridať riadky k vzorovým údajom, zatiaľ čo zoskupenia zbalia výber a bude tam menej riadkov.
  2. Výsledky možno vypočítať pre všetky vzorové údaje alebo pre jednotlivé polia, pričom na rozdiel od zoskupení môžu existovať polia, ktoré nie sú ani súčty, ani zoskupenia.
  3. Výsledky môže brať do úvahy hierarchiu.

Najprv trocha teórie. Súhrnná časť v dopytoch 1C pozostáva z dvoch častí.

Prvý začína kľúčovým slovom VÝSLEDKY a obsahuje súhrnné polia s agregovanou funkciou, ktorá sa na ne vzťahuje. Táto sekcia môže zostať prázdna, potom bude výsledkom požiadavky jednoducho zoskupenie podľa polí nasledujúcej sekcie bez výpočtu celkových údajov.

V zoskupeniach sa používa 6 typov agregovaných funkcií:

  1. SUM— sumarizuje hodnoty zoskupeného stĺpca, vzťahuje sa len na číselné hodnoty.
  2. PRIEMER - Vypočíta aritmetický priemer hodnôt zoskupeného stĺpca, ktorý sa vzťahuje len na číselné hodnoty.
  3. MAXIMÁLNE — možno použiť pre akýkoľvek typ hodnoty zoskupeného stĺpca a vráti maximálnu hodnotu všetkých zoskupených stĺpcov. Ak hodnoty nie sú číselné, pri zoradení vo vzostupnom poradí sa vráti posledná.
  4. MINIMÁLNE - možno použiť pre akýkoľvek typ hodnoty zoskupeného stĺpca a vráti minimálnu hodnotu všetkých zoskupených stĺpcov. Ak hodnoty nie sú číselné, pri zoradení vo vzostupnom poradí sa vráti prvá.
  5. MNOŽSTVO— vráti počet hodnôt v zoskupenom stĺpci, dá sa použiť pre akýkoľvek typ hodnoty. Hodnoty typu sa neberú do úvahy NULOVÝ.
  6. RÔZNE MNOŽSTVO – vráti počet odlišných hodnôt v zoskupenom stĺpci, dá sa použiť pre akýkoľvek typ hodnoty. Hodnoty typu sa neberú do úvahy NULOVÝ.

Druhá časť začína kľúčovým slovom BY a obsahuje zoskupenia polí, v kontexte ktorých sa výsledok vypočíta na základe celkových polí. A/alebo slovo SÚ BEŽNÉ, ak potrebujete vypočítať súčty za celú vzorku. Tu je dôležité poradie, v akom budú polia umiestnené, závisí to aj od poradia, v akom sa vypočítavajú súčty na základe požiadavky.

Ak pole zoskupenia obsahuje údaje, ktoré majú hierarchickú štruktúru (hierarchický adresár), potom môžete vypočítať súčty pozdĺž celého hierarchického reťazca. Na tento účel sa používa kľúčové slovo HIERARCHIA za názvom poľa zoskupenia. Ak je potrebné vypočítať súčty pozdĺž celého hierarchického reťazca, okrem samotného poľa zoskupenia, použije sa kľúčové slovo LEN HIERARCHIA.

Vezmime si ako príklad tabuľku dodávok tovaru.

Úloha 1. Výpočet súčtu pre niekoľko polí.

Potrebujete zistiť, koľko tovaru bolo doručených a koľko je tam stolov a stoličiek.

Žiadosť. Text= "VYBERTE si
Supplies.Product AS Product,


OD
Zásoby AKO Zásoby
VÝSLEDKY
SUM(množstvo)
BY
SÚ BEŽNÉ,
produkt"
;

Výsledkom je nasledujúca tabuľka so súčtom (celkové riadky sú zvýraznené žltou farbou).

Úloha 2. Zoskupenie záznamov podľa poľa.

Je potrebné zoskupiť záznamy tabuľky podľa typu produktu.

Žiadosť. Text= "VYBERTE si
Supplies.Product AS Product,
Dodávky. Dodávateľ AS Dodávateľ,
Supplies.Quantity AS Množstvo,
OD
Zásoby AKO Zásoby
VÝSLEDKY

BY
Produkt";

Úloha 3. Výpočet súčtu polí s prihliadnutím na hierarchiu.

Žiadosť. Text= "VYBERTE si
Supplies.Product AS Product,
Dodávky. Dodávateľ AS Dodávateľ,
Supplies.Quantity AS Množstvo,
OD
Zásoby AKO Zásoby
VÝSLEDKY
SUM(množstvo)
BY
HIERARCHIA dodávateľa"
;

V dôsledku toho dostaneme nasledujúcu tabuľku.

Úloha 4. Výpočet súčtu iba podľa hierarchie.

Žiadosť. Text= "VYBERTE si
Supplies.Product AS Product,
Dodávky. Dodávateľ AS Dodávateľ,
Supplies.Quantity AS Množstvo,
OD
Zásoby AKO Zásoby
VÝSLEDKY
SUM(množstvo)
BY
LEN HIERARCHIA dodávateľa"
;

V dôsledku toho dostaneme nasledujúcu tabuľku.

Ako obísť výsledok dotazu so súčtom

Výsledok dotazu so súčtom možno obísť niekoľkými spôsobmi:

  1. Ako bežná žiadosť. V tomto prípade sa budú postupne zobrazovať zoskupenia a podrobné záznamy. Príklad takéhoto obchvatu je uvedený v článku.
  2. Samostatne obíďte zoskupenia a podrobné záznamy.
    Ako príklad si vezmime požiadavku z úlohy 1. Nebudeme však brať do úvahy celkové výsledky.

    SkupinyProdukt = Žiadosť. Spustiť() . Select(BypassQueryResult.ByGrouping, "Product" ) ;
    Kým GroupingsProduct. Next() Slučka
    //tu spracovávame zoskupovacie reťazce výsledku dotazu
    DetailedRecords = SkupinyProdukt. Vyber() ;
    Zatiaľ čo DetailedRecords. Next() Slučka
    //tu spracovávame riadky podrobných záznamov patriacich do skupín
    EndCycle ;
    EndCycle ;