SQL查找每种类型的订单每天的购买次数?

时间:2016-02-25 02:50:24

标签: sql google-bigquery

所以我在Google BigQuery中有一个SQL数据库,其中包含以UTC格式购买的订单时间戳,我使用DAYOFWEEK函数转换为数字(然后我使用CASE语句转换为人类可读的名称)

SQL查询是:

SELECT TypeOfDrink,
        CASE WHEN (DAYOFWEEK(CreateAt)=1) THEN 'Sunday' END AS Sunday,
        CASE WHEN (DAYOFWEEK(CreateAt)=2) THEN 'Monday' END AS Monday,
        CASE WHEN (DAYOFWEEK(CreateAt)=3) THEN 'Tuesday' END AS Tuesday,
        CASE WHEN (DAYOFWEEK(CreateAt)=4) THEN 'Wednesday' END AS Wednesday,
        CASE WHEN (DAYOFWEEK(CreateAt)=5) THEN 'Thursday' END AS Thursday,
        CASE WHEN (DAYOFWEEK(CreateAt)=6) THEN 'Friday' END AS Friday,
        CASE WHEN (DAYOFWEEK(CreateAt)=7) THEN 'Saturday' ELSE 'UnDefined' END AS Saturday,
        COUNT(TypeOfDrink) AS AmountBought 
        FROM CafeX_bigdata.Order 
        GROUP BY Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday, TypeOfDrink

但是,我将此作为输出:

Row TypeOfDrink Sunday  Monday  Tuesday Wednesday   Thursday    Friday   Saturday   AmountBought     
1   Single Origin Caffè Latte   null    null    Tuesday null    null    null    UnDefined   12   
2   Cappuccino  null    null    Tuesday null    null    null    UnDefined   130  
3   Caffè Mocha null    null    Tuesday null    null    null    UnDefined   161  
4   Macchiato   null    null    Tuesday null    null    null    UnDefined   174  
5   Caffè Latte null    null    Tuesday null    null    null    UnDefined   233  

在这种情况下,它经历了所有的日子,并列出了购买的数量..但是我只想在一行中将它们全部列在一行,在那里它们将列出一行中每周的每日值,而不是7行NULLS!

我正在使用BigQuery,因此一些SQL有点不同。我该怎么做?

谢谢! :)

1 个答案:

答案 0 :(得分:0)

您需要条件聚合。它看起来像这样:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
Strict//EN"
"http://w...content-available-to-author-only...3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://w...content-available-to-author-only...3.org/1999/xhtml">
<head>
<title>PHP Code Blocks</title>
<meta http-equiv="content-type"
     content="text/html; charset=iso-8859-1" />
</head>
<body>
<h1>Song Organizer</h1>
<?php

error_reporting(E_ALL);
ini_set('display_errors',1);

if (isset($_GET['action'])) {
     if ((file_exists("SongOrganizer/songs.txt"))
          && (filesize("SongOrganizer/songs.txt")
          != 0)) {
          $SongArray = file(
               "SongOrganizer/songs.txt");
          switch ($_GET['action']) {

             case 'Remove Duplicates':
               $SongArray = array_unique($SongArray);
               $SongArray = array_values($SongArray);
             break;

             case 'Sort Ascending':
               sort($SongArray);
             break;
             case ’Shuffle’:
                shuffle($SongArray);
             break;



          } // End of the switch statement

          if (count($SongArray)>0) {
             $NewSongs = implode($SongArray);
             $SongStore = fopen("SongOrganizer/songs.txt","wb");
             if ($SongStore === false)
                  echo "There was an error updating the song file\n";
             else {
                  fwrite($SongStore, $NewSongs);
                  fclose($SongStore);
                  }
              }
          else
              unlink("SongOrganizer/songs.txt");     
              }

          }

if (isset($_POST['submit'])) {
     $SongToAdd = stripslashes(
          $_POST['SongName']) . "\n";
     $ExistingSongs = array();
     if (file_exists("SongOrganizer/songs.txt")
          && filesize("SongOrganizer/songs.txt")
          > 0) {
          $ExistingSongs = file(
               "SongOrganizer/songs.txt");
     if (isset($_POST['submit'])) {
     $SongToAdd = stripslashes($_POST['SongName']) . "\n";
     $ExistingSongs = array();

     if (file_exists("SongOrganizer/songs.txt")
          && filesize("SongOrganizer/songs.txt")> 0) {
          $ExistingSongs = file("SongOrganizer/songs.txt");
         }

      }
   }
}



if ((!file_exists("SongOrganizer/songs.txt"))
     || (filesize("SongOrganizer/songs.txt")
     == 0))
     echo "<p>There are no songs in the
          list.</p>\n";
else {
     $SongArray = file(
          "SongOrganizer/songs.txt");
     echo "<table border=\"1\" width=\"100%\"
          style=\"background-color:lightgray\">\n";
     foreach ($SongArray as $Song) {
          echo "<tr>\n";
          echo "<td>" . htmlentities($Song) .
               "</td>";
          echo "</tr>\n";
     }
     echo "</table>\n";
}


?>
<p>
<a href="SongOrganizer.php?action=Sort%20Ascending">
     Sort Song List</a><br />
<a href="SongOrganizer.php?action=Remove%20Duplicates">
     Remove Duplicate Songs</a><br />
<a href="SongOrganizer.php?action=Shuffl e">
     Randomize Song list</a><br />
</p>
<form action="SongOrganizer.php" method="post">
<p>Add a New Song</p>
<p>Song Name: <input type="text" name="SongName"
     /></p>
<p><input type="submit" name="submit"
     value="Add Song to List" />
<input type="reset" name="reset"
     value="Reset Song Name" /></p>
</form>
</body>
</html>
相关问题