473,386 Members | 1,773 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,386 software developers and data experts.

query

Hi all,

I have a table CARS that model cars coming in and out of a dealership.
(This is oversimplified)

create table cars(VIN varchar(50) not null primary key, location_id
int not null, inDate date not null, outDate date)

Every time I buy a new car it's gonna show in the log with the inDate
as today's date, every time i sell it, the outDate gets upated (from
null to current date).
I want to write a query to retrieve the number of cars bought and sold
daily over a period of time grouped by locations
For instance
06/06/07 somelocationid 10 in 8 out
06/06/07 someotherlocationid 2in 3 out
06/07/07 ..........

The results will end up in some sort of a fact table (i'm not sure
here if it's better to keep all days in this fact table - even those
that have 0 out 0 in or just skip the dates i have no flow - the fact
table will be used to compute all sort of trends over time etc)
thanks

Jun 11 '07 #1
3 2084
Jo**********@gmail.com wrote:
Hi all,

I have a table CARS that model cars coming in and out of a dealership.
(This is oversimplified)

create table cars(VIN varchar(50) not null primary key, location_id
int not null, inDate date not null, outDate date)

Every time I buy a new car it's gonna show in the log with the inDate
as today's date, every time i sell it, the outDate gets upated (from
null to current date).
I want to write a query to retrieve the number of cars bought and sold
daily over a period of time grouped by locations
For instance
06/06/07 somelocationid 10 in 8 out
06/06/07 someotherlocationid 2in 3 out
06/07/07 ..........
Something like this should do it...

WITH alldates(dt) AS (VALUES (CURRENT DATE)
UNION ALL
SELECT dt - 1 DAY FROM alldates
WHERE dt CURRENT DATE - 1 YEAR)
SELECT dt,
(SELECT count(1) FROM cars WHERE dt = in) as in
(SELECT count(1) FROM cars WHERE dt = out) as out
FROM alldates d

Adding the location is trivial ;-)

Cheers
Serge

--
Serge Rielau
DB2 Solutions Development
IBM Toronto Lab
Jun 11 '07 #2
thanks Serge,

actually my problem is that I'm not sure what is the best way to join
the CTE with the CARS table so I get access to the other fields I want
to group by (location in my example)

My idea was to do something like

WITH alldates(dt) AS (VALUES (CURRENT DATE)
UNION ALL
SELECT dt - 1 DAY FROM alldates
WHERE dt CURRENT DATE - 1 YEAR)
SELECT dt, location,
sum(case when dt=in then 1 else 0) as in,
sum(case when dt=out then 1 else 0) as out
from alldates join cars on (dt=in or dt=out)
group by dt, location

However, there is something I don;t like about my query and I;m not
sure what.
You say adding location is trivial, how would you do that?

Jun 12 '07 #3
On Tue, 12 Jun 2007 21:03:01 -0000, "Jo**********@gmail.com"
<Jo**********@gmail.comwrote:
>thanks Serge,

actually my problem is that I'm not sure what is the best way to join
the CTE with the CARS table so I get access to the other fields I want
to group by (location in my example)

My idea was to do something like

WITH alldates(dt) AS (VALUES (CURRENT DATE)
UNION ALL
SELECT dt - 1 DAY FROM alldates
WHERE dt CURRENT DATE - 1 YEAR)
SELECT dt, location,
sum(case when dt=in then 1 else 0) as in,
sum(case when dt=out then 1 else 0) as out
from alldates join cars on (dt=in or dt=out)
group by dt, location

However, there is something I don;t like about my query and I;m not
sure what.
Perhaps that you are making an INNER JOIN when it should be an OUTER
JOIN on two separate instances of the TABLE?

That's why Serge used a couple subqueries. Like an OUTER JOIN, when
there is no satisfaction of the JOIN criteria, it returns a 0 (like
the JOIN's NULL).
>You say adding location is trivial, how would you do that?
Add a query to pull all unique locations, perhaps in the WITH or in
the FROM, then let a Cartesian join give all locations for all dates.
Once that is done, add location to the sub-qeuries or JOIN clauses.

B.
Jun 13 '07 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
by: jaysonsch | last post by:
Hello! I am having some problems with a database query that I am trying to do. I am trying to develop a way to search a database for an entry and then edit the existing values. Upon submit, the...
29
by: shank | last post by:
1) I'm getting this error: Syntax error (missing operator) in query expression on the below statement. Can I get some advice. 2) I searched ASPFAQ and came up blank. Where can find the "rules"...
9
by: netpurpose | last post by:
I need to extract data from this table to find the lowest prices of each product as of today. The product will be listed/grouped by the name only, discarding the product code - I use...
3
by: Harvey | last post by:
Hi, I try to write an asp query form that lets client search any text-string and display all pages in my web server that contain the text. I have IIS 6.0 on a server 2003. The MSDN site says...
4
by: Diamondback | last post by:
I have two tables, WIDGETS and VERSIONS. The WIDGETS table has descriptive information about the widgets while the VERSIONS table contains IDs relating to different iterations of those widgets...
14
by: Dave Thomas | last post by:
If I have a table set up like this: Name | VARCHAR Email | VARCHAR Age | TINYINT | NULL (Default: NULL) And I want the user to enter his or her name, email, and age - but AGE is optional. ...
0
by: starace | last post by:
I have designed a form that has 5 different list boxes where the selections within each are used as criteria in building a dynamic query. Some boxes are set for multiple selections but these list...
6
by: jjturon | last post by:
Can anyone help me?? I am trying to pass a Select Query variable to a table using Dlookup and return the value to same select query but to another field. Ex. SalesManID ...
4
by: Stan | last post by:
I am using MS Office Access 2003 (11.5614). My basic question is can I run a query of a query datasheet. I want to use more that one criteria and can not get that query to work. I thought I...
6
by: jsacrey | last post by:
Hey everybody, got a secnario for ya that I need a bit of help with. Access 97 using linked tables from an SQL Server 2000 machine. I've created a simple query using two tables joined by one...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.