<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Un geek et son écran &#187; Programmation</title>
	<atom:link href="http://ungeek.jeromeparadis.com/category/programmation/feed/" rel="self" type="application/rss+xml" />
	<link>http://ungeek.jeromeparadis.com</link>
	<description>Le blogue de Jérôme Paradis</description>
	<lastBuildDate>Wed, 24 Mar 2010 21:08:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Scott Guthrie annonce la sortie de ASP.NET AJAX 1.0</title>
		<link>http://ungeek.jeromeparadis.com/2007/01/1438/</link>
		<comments>http://ungeek.jeromeparadis.com/2007/01/1438/#comments</comments>
		<pubDate>Wed, 24 Jan 2007 01:35:41 +0000</pubDate>
		<dc:creator>Jérôme Paradis</dc:creator>
				<category><![CDATA[Programmation]]></category>

		<guid isPermaLink="false">http://ungeek.jeromeparadis.com/?p=471</guid>
		<description><![CDATA[Scott Guthrie est un employé de Microsoft que j&#8217;admire pour ses nombreux articles des plus utiles pour .Net.
Aujourd&#8217;hui, il nous annonce que la version finale de ASP.NET AJAX 1.0 est maintenant disponible pour téléchargement.
Donc, si vous programmez avec Visual Studio 2005 et que vous voulez rendre vos applications un peu plus &#171;&#160;Web 2.0&#8243;, n&#8217;attendez pas de vous [...]]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" href="http://weblogs.asp.net/scottgu/default.aspx">Scott Guthrie</a> est un employé de <a title="Microsoft" href="http://www.microsoft.com" target="_blank">Microsoft</a> que j&#8217;admire pour ses nombreux articles des plus utiles pour .Net.</p>
<p>Aujourd&#8217;hui, il nous <a target="_blank" href="http://weblogs.asp.net/scottgu/archive/2007/01/23/asp-net-ajax-1-0-released.aspx">annonce que la version finale de ASP.NET AJAX 1.0</a> est maintenant disponible pour téléchargement.</p>
<p>Donc, si vous programmez avec Visual Studio 2005 et que vous voulez rendre vos applications un peu plus &laquo;&nbsp;Web 2.0&#8243;, n&#8217;attendez pas de vous mettre à jour&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://ungeek.jeromeparadis.com/2007/01/1438/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Server: truc simple pour calculer la mediane</title>
		<link>http://ungeek.jeromeparadis.com/2005/06/472/</link>
		<comments>http://ungeek.jeromeparadis.com/2005/06/472/#comments</comments>
		<pubDate>Thu, 16 Jun 2005 00:45:00 +0000</pubDate>
		<dc:creator>Jérôme Paradis</dc:creator>
				<category><![CDATA[Programmation]]></category>

		<guid isPermaLink="false">http://ungeek.jeromeparadis.com/?p=457</guid>
		<description><![CDATA[&#192; moins d&#8217;avoir&#160;une version entreprise&#160;de SQL Server 2000&#160;et install&#233; les Analysis Services, SQL Server n&#8217;a pas de fonction pour calculer la m&#233;diane d&#8217;un champ sur une s&#233;rie d&#8217;enregistrements.
Je me suis cass&#233; le coco &#224; penser comment faire, incluant des proc&#233;dures SQL avec curseurs.&#160; Finalement, j&#8217;ai trouv&#233; une solution simple et rapide et j&#8217;aimerais la partager [...]]]></description>
			<content:encoded><![CDATA[<p>&#192; moins d&#8217;avoir&nbsp;une version entreprise&nbsp;de SQL Server 2000&nbsp;et install&#233; les Analysis Services, SQL Server n&#8217;a pas de fonction pour calculer la m&#233;diane d&#8217;un champ sur une s&#233;rie d&#8217;enregistrements.</p>
<p>Je me suis cass&#233; le coco &#224; penser comment faire, incluant des proc&#233;dures SQL avec curseurs.&nbsp; Finalement, j&#8217;ai trouv&#233; une solution simple et rapide et j&#8217;aimerais la partager via un exemple.</p>
<p>Supposons que l&#8217;on ait une table avec une s&#233;rie d&#8217;appels t&#233;l&#233;phoniques avec la dur&#233;e de chaque appel.&nbsp; Pour simplifier l&#8217;exemple, voici une d&#233;finition de table d&#8217;appels:</p>
<p><font face="Courier New" size="2">CREATE TABLE Appels (<br />&nbsp;&nbsp; AppelID&nbsp; INT PRIMARY KEY,<br />&nbsp;&nbsp; Duree&nbsp;&nbsp;&nbsp; SMALLINT NOT NULL)</font></p>
<p>Pour l&#8217;exemple, on a donc une table avec une s&#233;rie d&#8217;identificateurs d&#8217;appel et la dur&#233;e en secondes pour chaque appel.&nbsp; &#201;videmment, dans la vraie vie, il y aurait d&#8217;autres champs&#8230;</p>
<p>Selon la d&#233;finition d&#8217;une m&#233;diane, on doit trier la s&#233;rie d&#8217;appels selon la dur&#233;e et prendre la dur&#233;e du milieu.&nbsp; En g&#233;n&#233;ral, la m&#233;diane est un chiffre important et est souvent plus pratique que la moyenne (disponible comme fonction dans SQL Server), puisque &#231;a permet de ne pas tenir compte de valeurs extr&#232;mes qui feraient en sorte que la moyenne ne correspond pas &#224; un appel typique.&nbsp; Donc, dans cet exemple, la m&#233;diane devrait nous donner la dur&#233;e typique d&#8217;un appel.</p>
<p>Maintenant, voici comment faire&#8230;&nbsp; On va va trier les appels selon la dur&#233;e, prendre la moiti&#233; des premiers appels, les &#233;liminer de notre liste d&#8217;appels et ensuite prendre le premier appel de la liste r&#233;sultante que l&#8217;on trie &#224; nouveau.&nbsp; ATTENTION: cette technique donnera toujours la bonne m&#233;dianne sur un nombre impair d&#8217;enregistrements.&nbsp; Par contre, si le nombre est pair, on ne prend pas vraiment la valeur du milieu.&nbsp; Il faudrait alors s&#233;parer la s&#233;rie d&#8217;enregistrements en deux et prendre la moyenne des 2 valeurs o&#249; l&#8217;on a fait la s&#233;paration, ce qui serait pas mal plus compliqu&#233;.&nbsp; Mais, en g&#233;n&#233;ral, sur un grand nombre d&#8217;enregistrements avec des valeurs de nombre entiers, ma technique fonctionne bien.</p>
<p>Voici la requ&#234;te SQL pour calculer la m&#233;dianne sur notre exemple:</p>
<p><font face="Courier New" size="2">SELECT TOP 1 Duree<br />&nbsp; FROM Appels<br />&nbsp;WHERE AppelID NOT IN (<br />&nbsp;&nbsp;&nbsp; SELECT TOP 50 PERCENT AppelID<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM Appels<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY Duree<br />&nbsp;&nbsp;&nbsp; )<br />&nbsp;ORDER BY Duree</font></p>
<p>Donc, la sous-requ&#234;te du &laquo;&nbsp;NOT IN&nbsp;&raquo; va s&#233;lectionner les 50% appels les moins longs en triant les appels selon la dur&#233;e et en faisant un &laquo;&nbsp;TOP 50 PERCENT&nbsp;&raquo; des appels.&nbsp; Ensuite, la requ&#234;te principale va choisir tous les appels, tri&#233;s encore par dur&#233;e, &#233;limine les 50% premiers appels (la moiti&#233; des appels) et chosit le &laquo;&nbsp;TOP 1&#8243;, c&#8217;est &#224; dire le premier appel de la liste r&#233;sultante.&nbsp; &#199;a devrait donc toujours nous donner la bonne m&#233;dianne de la dur&#233;e des appels pour un nombre impair d&#8217;appels.&nbsp; Si on a beaucoup d&#8217;enregistrements d&#8217;appels, &#231;a devrait aussi nous donner la bonne m&#233;dianne pour un nombre d&#8217;appels pair, puisque la dur&#233;e d&#8217;un appel ne varie pas trop d&#8217;un appel &#224; l&#8217;autre.&nbsp; En g&#233;n&#233;ral, les appels du milieu, lorsque tri&#233;e par dur&#233;e, devraient tous avoir&nbsp; la m&#234;me dur&#233;e sur une grande quantit&#233; de donn&#233;es.</p>
<p>&#201;videmment, cette technique n&#8217;est pas fiable sur de petites quantit&#233;s de donn&#233;es.&nbsp; Utilisez-l&#224; judicieusement&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://ungeek.jeromeparadis.com/2005/06/472/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

