473,405 Members | 2,354 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,405 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 2085
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: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
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: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
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
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
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
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...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...

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.