sql >> Databasteknik >  >> RDS >> Database

Gruppering med ett ärendeutlåtande

Att veta vilken av kolumnerna du vill gruppera efter och hur du vill gruppera dem är först viktigt. Du måste veta det för att ställa in CASE STATEMENT vi kommer att skriva som en kolumn i vårt utvalda uttalande. I vårt fall, i en grupp e-postmeddelanden som besöker vår webbplats, vill vi veta hur många klick varje e-postleverantör står för sedan början av augusti. Vi skulle också vilja jämföra en enskild e-postleverantör med resten. I det här exemplet kommer vi att använda Gmail som vår tjänsteleverantör.

I vår SELECT uttalande, behöver vi DATE , PROVIDER och SUMMA av CLICKS till vår webbplats. Vi kan få dessa från TEST E-POST tabell i vår datakälla.

DATE kolumnen är ganska enkel:

"Test E Mails"."Created_Date" AS "DATE

Och eftersom vi letar efter SUM av CLICKS måste vi casta en SUM funktion över CLICKS kolumn.

SUM("Test E Mails"."Clicks") AS "CLICKS"

Det leder oss till vårt FALLUTTALANDE . Vi vet från PostgreSQL-dokumentationen att ett CASE STATEMENT, eller ett villkorligt uttalande, måste ordnas på följande sätt:

CASE
  WHEN condition THEN result
  [WHEN ...]
  [ELSE result]
  END

Vårt första och i det här fallet enda villkoret är att vi vill veta att alla e-postadresser som tillhandahålls av Gmail ska vara åtskilda från alla andra e-postleverantörer. Så den enda NÄR är:

WHEN "Test E Mails"."Provider" = 'Gmail' THEN 'Gmail'

Och det andra uttalandet skulle vara "Annan" för alla andra e-postadresser. Den resulterande tabellen i denna FALLUTTALANDE enbart med motsvarande e-postmeddelanden. Skulle se ut så här:

När du delar alla tre dessa kolumner för en SELECT STATEMENT och släng in resten av de nödvändiga bitarna för att bygga en SQL-fråga, allt tar form nedan.

Sedan efter att ha lagt till en PIVOT DATA steg in i datapipelinen får vi en tabell ordentligt arrangerad i rätt format för att skapa ett linjediagram som visar hur klick jämförs över tid.

Genom att använda Chartio kan vi göra allt ovan utan att skriva någon SQL utan att utnyttja Data Explorer och Data Pipeline-funktionerna. Efter att ha byggt upp vår underliggande fråga för att dra in alla kolumner kommer vi att behöva SUMMA AV KLICK , DATE och E-POSTADRESS vi kan använda Data Pipeline för att manipulera denna data efter SQL. Låt oss först bygga frågan.

Dra "Klickkolumnen" till måttrutan och aggregera den med TOTAL SUMMA av kolumnklicken och märk sedan om den som "KLICKA".

Dra sedan "Skapat datum" och "Leverantör" till dimensionsrutan och märk dem igen "Datum" och "E-postleverantör." Därefter kan du använda kolumnen "Skapat datum" ställa in datumintervallet (eller bygga din VAR klausul) att vara allt efter 2017-08-01. Detta kommer i praktiken att bygga upp allt vi behöver i en underliggande fråga för att skapa CASE STATEMENT vi gjorde ovan, i Chartios datapipeline.

Lägga till en CASE STATEMENT pipeline-steget låter oss ställa in villkoren för WHEN och ANELSE precis som vi gjorde tidigare, utan att behöva skriva in hela SQL-syntaxen.

Sedan efter att ha gömt den ursprungliga kolumnen "Provider" och använt en REORDER COLUMNS steg och en PIVOT DATA steg vi får samma tabelluppställning som vi fick i SQL-läge och kan presentera samma tabell som vi gjorde i SQL-läge.

Även om det kan ta några fler klick och steg än i SQL-läge, kräver det resulterande linjediagrammet i interaktivt läge ingen kunskap om SQL-syntax. Istället krävs bara en grundläggande förståelse för de involverade principerna. Det här är ytterligare ett exempel på hur Chartio hjälper till att lägga kraften i data i allas händer, oavsett SQL-kunskap.


  1. Hur använder man osignerade int/long-typer med Entity Framework?

  2. Få aktuellt år, aktuell månad och aktuell dag i MySQL

  3. Hur LEFT()-funktionen fungerar i MySQL

  4. 3 sätt att formatera ett tal till 2 decimaler i Oracle