Differences

This shows you the differences between two versions of the page.

Link to this comparison view

u4_databaser [2017-09-01 14:54]
u4_databaser [2022-07-18 13:20] (current)
Line 1: Line 1:
 +====== SELECT frågor 4 ======
 +<php>
 +/*
 +1. Skriv ett lite PHP-script som lägger in 100 000 datum poster med en slumpad temperatur (Temp) mellan 0 och 20.
 +Temperaturen skall ha en decimal.
 +Det första datumet skall vara "1970-01-01 00:00:00" sen skall det in en post var 5:e timme.
 +
 +Er PHP-kod för att lägga in data bör inte vara mycket mer än detta:
 +<code php>
 +<?php
 +// Ni måste ju koppla upp er mot databasen mm...
 +for($i=0; $i<100000; $i++) {
 +//  $sql =  "INSERT INTO `Dates` (`DateTime` ,`Temp`) VALUES (...resten ska ni göra själva...";
 +    $sql = "INSERT INTO `Dates` (`DateTime` ,`Temp`) VALUES (DATE_ADD('1970-01-01 00:00:00',INTERVAL " .($i*5). " HOUR),ROUND(RAND()*20))";
 +    mysql_query($sql);
 +}
 +?>
 +</code>
 +Tips! DATE_ADD, RAND, ROUND
 +
 +Så här kan er tabell se ut...
 +<code sql>
 +CREATE TABLE IF NOT EXISTS `Dates` (
 +  `ID` int(11) NOT NULL auto_increment,
 +  `DateTime` datetime NOT NULL,
 +  `Temp` float NOT NULL,
 +  PRIMARY KEY  (`ID`)
 +) ENGINE=MyISAM;
 +</code>
 +
 +//Om ni har lyckats att skapa era poster så kan ni tabort tabellen "Dates" om ni vill...//
 +*/
 +</php>
 +
 +Nu skall du använda min databas **jf**. Om du inte kommer ihåg hur man loggade in kolla: [[u1_databaser]]\\
 +Tabellen heter **Dates**. 
 +
 +1. Ni skall beräkna medeltemperaturen för åren 2000-2005 jag vill också veta hur många temperatur poster det finns registrerade varje år.
 +ex på lämpligt svar på er SQL-fråga
 +<code>
 ++------+-----------------+-------+
 +| Year | avg_Temp        | Antal |
 ++------+-----------------+-------+
 +| 2000 |  10.02464426562 |  1757 | 
 +| 2001 | 10.145547948748 |  1752 | 
 +| 2002 | 10.022888132409 |  1752 | 
 +| 2003 | 10.102796808013 |  1752 | 
 +| 2004 | 9.9797381764033 |  1757 | 
 +| 2005 | 9.8808790016154 |  1752 | 
 ++------+-----------------+-------+
 +</code>
 +
 +<php>
 +/*
 +SELECT YEAR(DateTime) AS Year, AVG(Temp) AS avg_TEMP, COUNT(ID) AS Antal FROM Dates 
 +WHERE YEAR(DateTime)>1999 AND YEAR(Datetime)<2006 GROUP BY YEAR(Datetime);
 +*/
 +</php>
 +
 +2. Plocka fram de år som har temperaturer registrerade 366 dagar...
 +<code>  
 ++------+------+
 +| Year | Days |
 ++------+------+
 +| 1972 |  366 |
 +| 1976 |  366 |
 +| 1980 |  366 |
 +| 1984 |  366 |
 +| 1988 |  366 |
 +| 1992 |  366 |
 +| 1996 |  366 |
 +| 2000 |  366 |
 +| 2004 |  366 |
 +| 2008 |  366 |
 +| 2012 |  366 |
 +| 2016 |  366 |
 +| 2020 |  366 |
 +| 2024 |  366 |
 ++------+------+
 +</code>
 +<php>
 +/*
 +SELECT YEAR(DateTime) as Year ,COUNT(DISTINCT DAYOFYEAR(DateTime)) AS 
 +Days FROM Dates GROUP BY YEAR(Datetime) HAVING Days=366;
 +alt.
 +SELECT * FROM (SELECT YEAR(DateTime) as Year ,COUNT(DISTINCT DAYOFYEAR(DateTime)) AS 
 +Days FROM Dates GROUP BY YEAR(Datetime)) as foo WHERE Days=366
 +
 +*/
 +</php>