Arjuna Aircraft Ident.: F-MBSD | Salut,
J'ai un table qui me sert à faire des stats de fréquentation.
Sans entrer dans la complexité du truc, voudrais savoir si vous voyez un moyen simple de faire la moyenne du nombre de hits pour une période donnée.
Mettons par exemple, actuellement, j'ai ça :
select <<jour_de_la_semaine>>, count(*) from wt_weblog where <<la semaine en cours>> group by <<jour_de_la_semaine>>
(je vous passe le détail de la syntaxe, surtout que la requête est bien plus compliquée que ça )
ensuite, j'ai la même requête pour récupérer les mêmes infos sur la période précédente.
et maintenant, afin de mieu voir l'évolution de la chose, je voudrais ajouter aussi la moyenne.
c'est à dire "la moyenne du nombre de hits par jours de la semaine sur l'ensemble des dates jusqu'à la semaine dernière" (histoire que la semaine en cours ne vienne pas polluer la moyenne)
et là, mise à part en faisant une sous-requête, je vois pas trop.
seulement ma requête est un peut beaucoup très complexe (100% dynamique, les critères de sélection, de regroupement et de filtres sont 100% dynamiques) et je sens que ça va me péter à la tronche...
en effet, je pourrais bien faire !
select <<jour_de_la_semaine>>, agv(*)
from
(
select <<date>>, count(*)
from wt_web_logs
where <<tout_sauf_la_semaine_en_cours>>
group by date
)
group by <<jour_de_la_semaine>>
mais là je la sens pas... (notamment parceque là je parle en jours, mais je peux aussi avoir des heures, des mois, etc.)
Bon, c pas clair (t'ain pis chuis pas réveillé ça m'énerve !)
Voilà le code, je pense que vous comprendrez mieu ma détresse
(mais nan c'est pas goret, ça marche )
Code :
- private void FillFilters()
- {
- if (canRefresh)
- {
- canRefresh = false;
- int i;
- ComboboxItem oldItem = new ComboboxItem();
- siteCondition = "";
- codsocCondition = "";
- pageCondition = "";
- typtieCondition = "";
- sigtieCondition = "";
- codproCondition = "";
- periodeCondition1 = "";
- periodeCondition2 = "";
- if (site.SelectedItem != null && ((ComboboxItem)site.SelectedItem).val != 0)
- {
- siteCondition = string.Format(" and host = '{0}'", ((ComboboxItem)site.SelectedItem).text);
- }
- if (codsoc.SelectedItem != null && ((ComboboxItem)codsoc.SelectedItem).val != 0)
- {
- codsocCondition = string.Format(" and codsoc = {0}", ((ComboboxItem)codsoc.SelectedItem).val.ToString());
- }
- if (page.SelectedItem != null && ((ComboboxItem)page.SelectedItem).val != 0)
- {
- pageCondition = string.Format(" and page = '{0}'", ((ComboboxItem)page.SelectedItem).text);
- }
- if (typtie.SelectedItem != null && ((ComboboxItem)typtie.SelectedItem).val != 0)
- {
- typtieCondition = string.Format(" and typtie = '{0}'", ((ComboboxItem)typtie.SelectedItem).text);
- }
- if (sigtie.SelectedItem != null && ((ComboboxItem)sigtie.SelectedItem).val != 0)
- {
- sigtieCondition = string.Format(" and sigtie = '{0}'", ((ComboboxItem)sigtie.SelectedItem).text);
- }
- if (codpro.SelectedItem != null && ((ComboboxItem)codpro.SelectedItem).val != 0)
- {
- codproCondition = string.Format(" and codpro = '{0}'", ((ComboboxItem)codpro.SelectedItem).text);
- }
- if (periode.SelectedItem != null && ((ComboboxItem)periode.SelectedItem).val != 0)
- {
- switch (((ComboboxItem)periode.SelectedItem).val)
- {
- case 1:
- periodeCondition1 = " and datlog = to_char(sysdate, 'YYYYMMDD')";
- periodeCondition2 = " and datlog = to_char(sysdate - 1, 'YYYYMMDD')";
- break;
- case 2:
- periodeCondition1 = " and to_char(to_date(datlog, 'YYYYMMDD'), 'YYYYIW') = to_char(sysdate, 'YYYYIW')";
- periodeCondition2 = " and to_char(to_date(datlog, 'YYYYMMDD'), 'YYYYIW') = to_char(sysdate - 7, 'YYYYIW')";
- break;
- case 3:
- periodeCondition1 = " and to_char(to_date(datlog, 'YYYYMMDD'), 'YYYYMM') = to_char(sysdate , 'YYYYMM')";
- periodeCondition2 = " and to_char(to_date(datlog, 'YYYYMMDD'), 'YYYYMM') = to_char(add_months(sysdate, -1) , 'YYYYMM')";
- break;
- case 4:
- periodeCondition1 = " and to_char(to_date(datlog, 'YYYYMMDD'), 'YYYY') = to_char(sysdate, 'YYYY')";
- periodeCondition2 = " and to_char(to_date(datlog, 'YYYYMMDD'), 'YYYY') = to_char(add_months(sysdate, -12), 'YYYY')";
- break;
- default:
- break;
- }
- }
- // site
- if (site.SelectedItem != null)
- {
- oldItem = (ComboboxItem)site.SelectedItem;
- }
- else
- {
- oldItem.Set(0, "" );
- }
- OleDbCommand siteCmd = new OleDbCommand(string.Format("select distinct host from wt_weblog where 1 = 1{0}{1}{2}{3}{4}{5}{6} order by host", "", codsocCondition, pageCondition, typtieCondition, sigtieCondition, codproCondition, "" ), cnx);
- OleDbDataReader siteDr = siteCmd.ExecuteReader(CommandBehavior.Default);
- i = 1;
- site.Items.Clear();
- ComboboxItem siteItem = new ComboboxItem();
- siteItem.Set(0, "Site" );
- site.Items.Add(siteItem);
- while (siteDr.Read())
- {
- siteItem.Set(i++, siteDr.GetString(0));
- site.Items.Add(siteItem);
- }
- site.SelectedIndex = 0;
- foreach (ComboboxItem item in site.Items)
- {
- if (item.isEqual(oldItem))
- {
- site.SelectedItem = item;
- break;
- }
- }
- siteDr.Close();
- siteDr = null;
- siteCmd.Dispose();
- siteCmd = null;
- // codsoc
- if (codsoc.SelectedItem != null)
- {
- oldItem = (ComboboxItem)codsoc.SelectedItem;
- }
- else
- {
- oldItem.Set(0, "" );
- }
- OleDbCommand codsocCmd = new OleDbCommand(string.Format("select distinct ut_soc.soc, ut_soc.libut_soc from ut_soc, wt_weblog where ut_soc.soc = wt_weblog.codsoc{0}{1}{2}{3}{4}{5}{6} order by libut_soc", siteCondition, "", pageCondition, typtieCondition, sigtieCondition, codproCondition, "" ), cnx);
- OleDbDataReader codsocDr = codsocCmd.ExecuteReader(CommandBehavior.Default);
- codsoc.Items.Clear();
- ComboboxItem codsocItem = new ComboboxItem();
- codsocItem.Set(0, "Société" );
- codsoc.Items.Add(codsocItem);
- while (codsocDr.Read())
- {
- codsocItem.Set(System.Convert.ToInt32(codsocDr.GetDecimal(0)), codsocDr.GetString(1));
- codsoc.Items.Add(codsocItem);
- }
- codsoc.SelectedIndex = 0;
- foreach (ComboboxItem item in codsoc.Items)
- {
- if (item.isEqual(oldItem))
- {
- codsoc.SelectedItem = item;
- break;
- }
- }
- codsocDr.Close();
- codsocDr = null;
- codsocCmd.Dispose();
- codsocCmd = null;
- // page
- if (page.SelectedItem != null)
- {
- oldItem = (ComboboxItem)page.SelectedItem;
- }
- else
- {
- oldItem.Set(0, "" );
- }
- OleDbCommand pageCmd = new OleDbCommand(string.Format("select distinct page from wt_weblog where 1 = 1{0}{1}{2}{3}{4}{5}{6} order by page", siteCondition, codsocCondition, "", typtieCondition, sigtieCondition, codproCondition, "" ), cnx);
- OleDbDataReader pageDr = pageCmd.ExecuteReader(CommandBehavior.Default);
- i = 1;
- page.Items.Clear();
- ComboboxItem pageItem = new ComboboxItem();
- pageItem.Set(0, "Page" );
- page.Items.Add(pageItem);
- while (pageDr.Read())
- {
- pageItem.Set(i++, pageDr.GetString(0));
- page.Items.Add(pageItem);
- }
- page.SelectedIndex = 0;
- foreach (ComboboxItem item in page.Items)
- {
- if (item.isEqual(oldItem))
- {
- page.SelectedItem = item;
- break;
- }
- }
- pageDr.Close();
- pageDr = null;
- pageCmd.Dispose();
- pageCmd = null;
- // typtie
- if (typtie.SelectedItem != null)
- {
- oldItem = (ComboboxItem)typtie.SelectedItem;
- }
- else
- {
- oldItem.Set(0, "" );
- }
- OleDbCommand typtieCmd = new OleDbCommand(string.Format("select distinct typtie from wt_weblog where 1 = 1{0}{1}{2}{3}{4}{5}{6} order by typtie", siteCondition, codsocCondition, pageCondition, "", sigtieCondition, codproCondition, "" ), cnx);
- OleDbDataReader typtieDr = typtieCmd.ExecuteReader(CommandBehavior.Default);
- i = 1;
- typtie.Items.Clear();
- ComboboxItem typtieItem = new ComboboxItem();
- typtieItem.Set(0, "typtie" );
- typtie.Items.Add(typtieItem);
- while (typtieDr.Read())
- {
- typtieItem.Set(i++, typtieDr.GetString(0));
- typtie.Items.Add(typtieItem);
- }
- typtie.SelectedIndex = 0;
- foreach (ComboboxItem item in typtie.Items)
- {
- if (item.isEqual(oldItem))
- {
- typtie.SelectedItem = item;
- break;
- }
- }
- typtieDr.Close();
- typtieDr = null;
- typtieCmd.Dispose();
- typtieCmd = null;
- // sigtie
- if (sigtie.SelectedItem != null)
- {
- oldItem = (ComboboxItem)sigtie.SelectedItem;
- }
- else
- {
- oldItem.Set(0, "" );
- }
- OleDbCommand sigtieCmd = new OleDbCommand(string.Format("select distinct sigtie from wt_weblog where 1 = 1{0}{1}{2}{3}{4}{5}{6} order by sigtie", siteCondition, codsocCondition, pageCondition, typtieCondition, "", codproCondition, "" ), cnx);
- OleDbDataReader sigtieDr = sigtieCmd.ExecuteReader(CommandBehavior.Default);
- i = 1;
- sigtie.Items.Clear();
- ComboboxItem sigtieItem = new ComboboxItem();
- sigtieItem.Set(0, "sigtie" );
- sigtie.Items.Add(sigtieItem);
- while (sigtieDr.Read())
- {
- sigtieItem.Set(i++, sigtieDr.GetString(0));
- sigtie.Items.Add(sigtieItem);
- }
- sigtie.SelectedIndex = 0;
- foreach (ComboboxItem item in sigtie.Items)
- {
- if (item.isEqual(oldItem))
- {
- sigtie.SelectedItem = item;
- break;
- }
- }
- sigtieDr.Close();
- sigtieDr = null;
- sigtieCmd.Dispose();
- sigtieCmd = null;
- // codpro
- if (codpro.SelectedItem != null)
- {
- oldItem = (ComboboxItem)codpro.SelectedItem;
- }
- else
- {
- oldItem.Set(0, "" );
- }
- OleDbCommand codproCmd = new OleDbCommand(string.Format("select distinct codpro from wt_weblog where 1 = 1{0}{1}{2}{3}{4}{5}{6} order by codpro", siteCondition, codsocCondition, pageCondition, typtieCondition, sigtieCondition, "", "" ), cnx);
- OleDbDataReader codproDr = codproCmd.ExecuteReader(CommandBehavior.Default);
- i = 1;
- codpro.Items.Clear();
- ComboboxItem codproItem = new ComboboxItem();
- codproItem.Set(0, "codpro" );
- codpro.Items.Add(codproItem);
- while (codproDr.Read())
- {
- codproItem.Set(i++, codproDr.GetString(0));
- codpro.Items.Add(codproItem);
- }
- codpro.SelectedIndex = 0;
- foreach (ComboboxItem item in codpro.Items)
- {
- if (item.isEqual(oldItem))
- {
- codpro.SelectedItem = item;
- break;
- }
- }
- codproDr.Close();
- codproDr = null;
- codproCmd.Dispose();
- codproCmd = null;
- // periode
- if (periode.SelectedItem != null)
- {
- oldItem = (ComboboxItem)periode.SelectedItem;
- }
- else
- {
- oldItem.Set(0, "" );
- }
- periodeItems = new ComboboxItem[5];
- periodeItems[0].Set(0, "Période" );
- periodeItems[1].Set(1, "Jour" );
- periodeItems[2].Set(2, "Semaine" );
- periodeItems[3].Set(3, "Mois" );
- periodeItems[4].Set(4, "Année" );
- periode.Items.Clear();
- foreach (ComboboxItem item in periodeItems)
- {
- periode.Items.Add(item);
- }
- periode.SelectedIndex = 0;
- foreach (ComboboxItem item in periode.Items)
- {
- if (item.isEqual(oldItem))
- {
- periode.SelectedItem = item;
- break;
- }
- }
- LoadStats();
- canRefresh = true;
- }
- }
- private void LoadStats()
- {
- statusBar1.Text = "Chargement des données...";
- statusBar1.Refresh();
- groupBy = string.Empty;
- orderBy = string.Empty;
- if (radioButton1.Checked)
- {
- groupBy = "host";
- }
- else if (radioButton2.Checked)
- {
- groupBy = "to_char(codsoc)";
- }
- else if (radioButton3.Checked)
- {
- groupBy = "page";
- }
- else if (radioButton4.Checked)
- {
- groupBy = "typtie";
- }
- else if (radioButton5.Checked)
- {
- groupBy = "sigtie";
- }
- else if (radioButton6.Checked)
- {
- groupBy = "codpro";
- }
- else if (radioButton7.Checked)
- {
- switch (((ComboboxItem)periode.SelectedItem).val)
- {
- case 0:
- groupBy = "to_char(to_date(wt_weblog.datlog, 'YYYYMMDD'), 'YYYY')";
- break;
- case 1:
- groupBy = "to_char(to_date(wt_weblog.heulog, 'HH24:MI:SS'), 'HH24')";
- break;
- case 2:
- groupBy = "to_char(to_date(wt_weblog.datlog, 'YYYYMMDD'), 'DAY')";
- orderBy = "to_char(to_date(wt_weblog.datlog, 'YYYYMMDD'), 'D')";
- break;
- case 3:
- groupBy = "to_char(to_date(wt_weblog.datlog, 'YYYYMMDD'), 'DD')";
- break;
- case 4:
- groupBy = "to_char(to_date(wt_weblog.datlog, 'YYYYMMDD'), 'MONTH')";
- orderBy = "to_char(to_date(wt_weblog.datlog, 'YYYYMMDD'), 'MM')";
- break;
- default:
- break;
- }
- }
- string sql1 = "select {0} a, count(*) b, 0 c, {9} d from wt_weblog where 1 = 1{1}{2}{3}{4}{5}{6}{7}{8}";
- string sql2 = "select {0} a, 0 b, count(*) c, {9} d from wt_weblog where 1 = 1{1}{2}{3}{4}{5}{6}{7}{8}";
- if (groupBy == "" )
- {
- sql1 = string.Format(sql1, "'tous'", siteCondition, codsocCondition, pageCondition, typtieCondition, sigtieCondition, codproCondition, periodeCondition1, "", "null" );
- }
- else
- {
- sql1 = string.Format(sql1, string.Format("{0}", groupBy), siteCondition, codsocCondition, pageCondition, typtieCondition, sigtieCondition, codproCondition, periodeCondition1, string.Format(" group by {0}", (orderBy==string.Empty)?groupBy:orderBy + ", " +groupBy), (orderBy==string.Empty)?"null":orderBy);
- }
- if (groupBy == "" )
- {
- sql2 = string.Format(sql2, "'tous'", siteCondition, codsocCondition, pageCondition, typtieCondition, sigtieCondition, codproCondition, periodeCondition2, "", "null" );
- }
- else
- {
- sql2 = string.Format(sql2, string.Format("{0}", groupBy), siteCondition, codsocCondition, pageCondition, typtieCondition, sigtieCondition, codproCondition, periodeCondition2, string.Format(" group by {0}", (orderBy==string.Empty)?groupBy:orderBy + ", " +groupBy), (orderBy==string.Empty)?"null":orderBy);
- }
- string sql = string.Format("select a \"Objet\", sum(b) \"Période d'étude\", sum(c) \"Période précédente\" from ({0} union {1}) tmp group by d, a", sql1, sql2);
- OleDbCommand statsCmd = new OleDbCommand(sql, cnx);
- OleDbDataAdapter da = new OleDbDataAdapter(statsCmd);
- DataSet ds = new DataSet();
- da.Fill(ds);
- dataGrid1.DataSource = ds.Tables[0];
- chart1.dataSource = ds;
- chart1.DataBind();
- ds.Dispose();
- ds = null;
- da.Dispose();
- da = null;
- statsCmd.Dispose();
- statsCmd = null;
- statusBar1.Text = "Données chargées";
- statusBar1.Refresh();
- }
|
Ca fait peur hein ?
-- Edit : Je me disais "tiens, elles sont passées où mes conditions ?" Forcément, j'avais oublié de poster la moitié du code -- Message édité par Arjuna le 17-02-2006 à 12:04:31
|