Query

  • Creatore Discussione Creatore Discussione Max61
  • Data di inizio Data di inizio

Max61

Utente Attivo
2 Mar 2014
760
4
18
Salve a tutto agli iscritti del forum, ho problema con questa query
PHP:
SELECT zona, periodo_test, giorno, giorno_settimana, mese, count(id_test_ambiente) as conta
FROM tbltestambiente
GROUP BY zona, periodo_test, giorno, giorno_settimana, mese
e questo è il risultato
zonaperiodo_testgiornogiorno_settimanameseconta
AMattina16-05-2022lunediMaggio1
AMattina17-03-2022giovediMarzo5
BMattina16-05-2022lunediMaggio1
BMattina17-03-2022giovediMarzo1
CMattina29-04-2022venerdiAprile2
DMattina11-05-2022mercolediMaggio1

io invece vorrei per esempio che nella zona A vedessi la somma (5+1) e vedere l'ultimo record inserito, nel caso specifico è quello del 16-05-2022, così per ogni zona.
Grazie per l'aiuto
Max61
 
ciao, vedi se ti va bene questa soluzione, provata con i dati esposti nella tua tabella (6 elementi)

1653078626222.png


sarebbe più corretto basare la ricerca su "id_test_ambiente" anzichè su "giorno" ma non so come sono stati caricati i dati nella tabella ed ho usato "giorno"

SQL:
SELECT
    t1.zona
  , t2.periodo_test
  , t1.giorno
  , t2.giorno_settimana
  , t2.mese
  , t1.counter
FROM
(
  SELECT
    zona
  , max(giorno) as giorno
  , count(zona) as counter
  FROM tbltestambiente
  GROUP BY zona
) t1
LEFT JOIN tbltestambiente t2
  ON t1.zona=t2.zona and t1.giorno=t2.giorno
 
Grazie marino51, ci siamo quasi al risultato che mi aspettavo, ma ancora non va bene, io avrei voluto il record con la data più alta, nel caso specifico è 16-05-2022, mentre mi estrae 17-03-2022.
allego risultato
zonaperiodo_testgiornogiorno_settimanamesecounter
ANULL17-03-2022NULLNULL6
BNULL17-03-2022NULLNULL2
CNULL29-04-2022NULLNULL2
DNULL11-05-2022NULLNULL1
 
se guardi il risultato della mia query,

estrae 2022-05-16 il valore da te atteso,

inoltre le colonne sono tutte correttamente valorizzate, nessuna contiene NULL

prova a fare il copia/incolla della mia query ed eseguila, poi mi dici cosa non va
 
Facendo il copia incolla mi restituisce questo
zonaperiodo_testgiornogiorno_settimanamesecounter
AMattina17-03-2022giovediMarzo6
AMattina17-03-2022giovediMarzo6
AMattina17-03-2022giovediMarzo6
AMattina17-03-2022giovediMarzo6
BMattina17-03-2022giovediMarzo2
AMattina17-03-2022giovediMarzo6
CMattina29-04-2022venerdiAprile2
CMattina29-04-2022venerdiAprile2
DMattina11-05-2022mercolediMaggio1
 
impossibile, perché la tabella da cui legge i dati e la t1, che raggruppa per zona generando la data massima ed il contatore

SQL:
FROM
(
  SELECT
    zona
  , max(giorno) as giorno
  , count(zona) as counter
  FROM tbltestambiente
  GROUP BY zona
) t1

hai pasticciato la mia query
 
Ti invio la tabella popolata...
Codice:
CREATE TABLE `tbltestambiente` (
  `id_test_ambiente` int(11) NOT NULL,
  `genere` varchar(255) NOT NULL,
  `fascia_eta` varchar(255) NOT NULL,
  `stato_civile` varchar(255) NOT NULL,
  `titolo_studio` varchar(255) NOT NULL,
  `occupazione` varchar(255) NOT NULL,
  `domanda1` varchar(255) NOT NULL,
  `domanda2` varchar(255) NOT NULL,
  `domanda3` varchar(255) NOT NULL,
  `domanda4` varchar(255) NOT NULL,
  `domanda5` varchar(255) NOT NULL,
  `domanda6` varchar(255) NOT NULL,
  `domanda7` varchar(255) NOT NULL,
  `domanda8` varchar(255) NOT NULL,
  `domanda9` varchar(255) NOT NULL,
  `domanda10` varchar(255) NOT NULL,
  `domanda11` varchar(255) NOT NULL,
  `domanda12` varchar(255) NOT NULL,
  `data_ora` varchar(255) NOT NULL,
  `zona` varchar(255) NOT NULL,
  `giorno` varchar(25) NOT NULL,
  `giorno_settimana` varchar(255) NOT NULL,
  `periodo_test` varchar(255) NOT NULL,
  `mese` varchar(255) NOT NULL,
  `anno` int(4) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dump dei dati per la tabella `tbltestambiente`
--

INSERT INTO `tbltestambiente` (`id_test_ambiente`, `genere`, `fascia_eta`, `stato_civile`, `titolo_studio`, `occupazione`, `domanda1`, `domanda2`, `domanda3`, `domanda4`, `domanda5`, `domanda6`, `domanda7`, `domanda8`, `domanda9`, `domanda10`, `domanda11`, `domanda12`, `data_ora`, `zona`, `giorno`, `giorno_settimana`, `periodo_test`, `mese`, `anno`) VALUES
(1, '1', '2', '1', '3', '11', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '17-03-2022 11.21.00', 'A', '17-03-2022', 'giovedi', 'Mattina', 'Marzo', 2022),
(2, '1', '2', '1', '3', '11', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '17-03-2022 11.23.45', 'A', '17-03-2022', 'giovedi', 'Mattina', 'Marzo', 2022),
(3, '1', '2', '1', '3', '11', '1', '1', '1', '1', '1', '1', '5', '5', '3', '5', '5', '3', '17-03-2022 11.24.29', 'A', '17-03-2022', 'giovedi', 'Mattina', 'Marzo', 2022),
(4, '1', '1', '5', '5', '1', '2', '1', '1', '2', '1', '1', '3', '1', '2', '4', '3', '3', '17-03-2022 11.41.07', 'A', '17-03-2022', 'giovedi', 'Mattina', 'Marzo', 2022),
(5, '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '17-03-2022 12.55.09', 'B', '17-03-2022', 'giovedi', 'Mattina', 'Marzo', 2022),
(6, '1', '3', '1', '1', '1', '1', '1', '1', '1', '1', '1', '5', '5', '3', '5', '5', '3', '17-03-2022 12.58.55', 'A', '17-03-2022', 'giovedi', 'Mattina', 'Marzo', 2022),
(7, '1', '6', '2', '3', '1', '1', '2', '2', '3', '5', '2', '3', '5', '2', '2', '3', '3', '29-04-2022 13.37.37', 'C', '29-04-2022', 'venerdi', 'Mattina', 'Aprile', 2022),
(8, '2', '4', '3', '5', '7', '4', '3', '3', '2', '2', '2', '4', '5', '1', '3', '1', '1', '29-04-2022 13.45.16', 'C', '29-04-2022', 'venerdi', 'Mattina', 'Aprile', 2022),
(9, '1', '2', '1', '4', '10', '3', '4', '3', '3', '5', '3', '3', '5', '2', '3', '1', '1', '11-05-2022 08.56.00', 'D', '11-05-2022', 'mercoledi', 'Mattina', 'Maggio', 2022),
(10, '1', '3', '3', '3', '5', '4', '1', '3', '3', '2', '2', '3', '3', '3', '3', '3', '3', '16-05-2022 09.30.18', 'A', '16-05-2022', 'lunedi', 'Mattina', 'Maggio', 2022),
(11, '1', '4', '3', '2', '3', '2', '1', '2', '4', '2', '1', '1', '2', '3', '4', '3', '3', '16-05-2022 09.50.24', 'B', '16-05-2022', 'lunedi', 'Mattina', 'Maggio', 2022);
 
1653344826135.png


SQL:
SELECT
    t1.zona
  , t2.periodo_test
  , t2.giorno
  , t2.giorno_settimana
  , t2.mese
  , t1.counter
FROM
(
  SELECT
    zona
  , max(id_test_ambiente) AS id_test_ambiente
  , count(zona)           AS counter
  FROM tbltestambiente
  GROUP BY zona
) t1
LEFT JOIN tbltestambiente t2
  ON t1.zona=t2.zona and t1.id_test_ambiente=t2.id_test_ambiente

la prossima volta converrà pubblicare subito l'esempio, é tempo risparmiato per tutti
 
Vedi l'allegato 8068

SQL:
SELECT
    t1.zona
  , t2.periodo_test
  , t2.giorno
  , t2.giorno_settimana
  , t2.mese
  , t1.counter
FROM
(
  SELECT
    zona
  , max(id_test_ambiente) AS id_test_ambiente
  , count(zona)           AS counter
  FROM tbltestambiente
  GROUP BY zona
) t1
LEFT JOIN tbltestambiente t2
  ON t1.zona=t2.zona and t1.id_test_ambiente=t2.id_test_ambiente

la prossima volta converrà pubblicare subito l'esempio, é tempo risparmiato per tutti
...si forse è meglio.
Grazie mille
Max61
 

Discussioni simili