oracle group by

oracle group by - SQL/NoSQL - Programmation

Marsh Posté le 01-08-2005 à 12:41:46    

Bonjour,
 
j'ai la requète suuivante qui fonctionne correctement:
SELECT
   study_modality, sum(image_size)/1024/1024, count(*)
FROM
   didb_studies s , didb_raw_images_table i, didb_image_locations l  
WHERE
   s.study_db_uid=i.study_db_uid AND
   l.raw_image_db_uid=i.raw_image_db_uid AND
   s.insert_time > '2005-08-01 00:00:00' AND
   s.insert_time < '2005-09-01 00:00:00'
GROUP BY study_modality  
 
# STUDY_MODALITY SUM(IMAGE_SIZE)/1024/1024 COUNT(*)
= ============== ========================= ========
1 \CR\           348.8989009857177734375   199      
2 \CT\           490.957485198974609375    2201    
3 \MR\PR\        368.87810516357421875     4896    
 
 
J'essaye de remplacer les deux conditions sur la date par un interval plus grand et regrouper par mois.
j'ai modifié ma requète comme suit  
SELECT
   insert_time, study_modality, sum(image_size)/1024/1024, count(*)
FROM
   didb_studies s , didb_raw_images_table i, didb_image_locations l  
WHERE
   s.study_db_uid=i.study_db_uid AND
   l.raw_image_db_uid=i.raw_image_db_uid AND
   s.insert_time > '2005-08-01 00:00:00' AND
   s.insert_time < '2005-09-01 00:00:00'
GROUP BY study_modality, insert_time  
 
et je recupère une erreure.
Je crois comprendre la source de l'erreur, mais je n'ai pas d'autre idée pour grouper mes résultats.
qqn peut il m'aider.
merci d'avance.
A titre d'info, voici un apperçu des tables:
 
DIDB_STUDY        DIDB_IMAGES        DIDB_IMAGE_LOCATION
==========        ===========        ===================
study_db_uid      raw_image_db_uid   didb_image_location_db_uid
study_modality    study_db_uid       raw_image_db_uid
insert_time                          image_size
 
en conclusion je cherche à créer un tableau donnant le volume des images en fonction du moins et de la modalitée:
 
     08/05    09/05     10/05     11/05     12/05
CT     xx       xx       xx         xx        xx  
MR     xx       xx       xx         xx        xx    
CR     xx       xx       xx         xx        xx

Reply

Marsh Posté le 01-08-2005 à 12:41:46   

Reply

Marsh Posté le 01-08-2005 à 23:05:38    

Problème de formattage de date, non ?
Et puis tu veux grouper par mois, donc il faut bien sélectionner le mois seulement dans ton GROUP BY.
 

Code :
  1. SELECT   TO_CHAR(insert_time, 'MM/YYYY'),
  2.          study_modality,
  3.          sum(image_size)/1024/1024,
  4.          count(*)
  5. FROM     didb_studies s,
  6.          didb_raw_images_table i,
  7.          didb_image_locations l 
  8. WHERE    s.study_db_uid=i.study_db_uid
  9. AND      l.raw_image_db_uid=i.raw_image_db_uid
  10. GROUP BY TO_CHAR(insert_time, 'MM/YYYY'),
  11.          study_modality;


Message édité par Beegee le 01-08-2005 à 23:08:06
Reply

Marsh Posté le 02-08-2005 à 22:47:40    

Merci Beegee,  
ça marche au poil bien que je ne comprennes pas pourquoi.
enfin ça clos mon cas.
merci encore

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed