Rückgabe mehrerer Spalten mit aggregierten Funktionen [Duplikat]MySql

MySQL DBMS-Forum
Anonymous
 Rückgabe mehrerer Spalten mit aggregierten Funktionen [Duplikat]

Post by Anonymous »

Ich versuche herauszufinden, wie man mehrere Spalten zurückgibt, die den gewünschten Aggregatfunktionen, maximal einer Summe, in SQL entsprechen. Krankheiten, die im Grunde genommen max sind (Summe (NO_OF_ILLNESSE)). Sample data (found in CDC link above):



table_id
Food_category
Year_first_ill
Serotype
No_of_illnesses
No_of_outbreak
Pathogen
Yr
Year_range
Running_total_by_year_range
< /tr>
< /thead>


Pork_adelaide_2011-2015 < /td>
Pork < /td>
2011 < /td>
/>0
0
Salmonella
2020
2011-2015
0


Pork_Adelaide_2011-2015
Pork
2012
Adelaide
0
0
Salmonella
2020 < /td>
2011-2015 < /td>
0 < /td>
< /tr>

....
... & < />...
...
...
...
...
...
... />
huhn_anatum_2011-2015 < /td>
Hühnchen < /td>
2011 < /td>
Anatum < /td> < /> < /td>
< /td> < /td> /> Salmonella < /td>
2020 < /td>
2011-2015 < /td>
0 < /td>
< /tr>
< /tbody>
< /table. max(Total_Illnesses) grouped by year with its corresponding food category, so the result would look partially like this:



Year
Food
Total_Illnesses




2011
Chicken
545


2012 < /td>
Hühnchen < /td>
544 < /td>
< /tr>

......ell/td> < />
2022
Beef
384


2023
Chicken
113
< /tr>
< /tbody>
< /table> < /div>
Um dies zu tun, habe ich ein Untergeschäft geschrieben, das die Zahlenkrankheiten nach Lebensmittelkategorie für dieses Jahr zusammenfasste und dann versuchte, das Maximum dieser Summen zu finden. Die beiden Vorschläge, die ich online gelesen habe, sind a) gruppiert nach beiden Spalten und b) die Fensterfunktion. Meine zwei Versuche: < /p>

Code: Select all

select Year_first_ill, Food_category, max(total)
from (select Year_first_ill, Food_category, sum(No_of_illnesses) as total
from salmonella
group by Food_category, Year_first_ill)s
group by Food_category, Year_first_ill
< /code>
, der das max nicht zurückgibt, aber im Wesentlichen die Summen aus der Sub-Quer-Tabelle zurückgibt (aber in einer anderen, ungeraden Reihenfolge-ich weiß nicht, ob dies relevant ist, aber die Daten werden von Food für 2011-20, aber in den letzten 3 Jahren gruppiert.  />

Year
Food
Total_Illnesses




2011
Pork
 238 < /td>
< /tr>

 2012 < /td>
 Schweinefleisch < /td>
 14 < /td>
< />

< />...


2011
Chicken
545


2012
Chicken
 544 < /td>
< /tr>

...
...
...

< /tbody> < /< /> < /> < /> < /> < /> < /> < /> < /< /> < /< /< /< /< /< /< /< /< /Div> < /< /DIV.select Year_first_ill, Food_category, MAX(total) OVER (PARTITION BY Year_first_ill)
from (select Year_first_ill, Food_category, sum(No_of_illnesses) as total
from salmonella
group by Food_category, Year_first_ill)s
which returns the correct max for each year, but repeated for each food:



Year
Food
Total_Illnesses
< /tr>
< /thead>


2011 < /td>
Türkei < /td>
545 < /td> < /> < /tr>

2011 < /td>

2011 < /tdl>

2011 < /tdl>

2011 < /tdl>

2011 < /td>


2011 < /td>

2011 < /td>

2011 < /td> < /td> < /td> < /tD />Pork
545


2011
Beef
545


2011 < /td>
Hühnchen < /td>
545 < /td>
< /tr>

...
... < />
2023
Pork
113


2023
Chicken
113
< /tr>

2023 < /td>
Rindfleisch < /td>
113 < /td>
< /tr>
< /tbody> < /> < /table> < /div>
< />

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post