Jump to content
Fórum Script Brasil

Search the Community

Showing results for tags 'group by'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Programação & Desenvolvimento
    • ASP
    • PHP
    • .NET
    • Java
    • C, C++
    • Delphi, Kylix
    • Lógica de Programação
    • Mobile
    • Visual Basic
    • Outras Linguagens de Programação
  • WEB
    • HTML, XHTML, CSS
    • Ajax, JavaScript, XML, DOM
    • Editores
  • Arte & Design
    • Corel Draw
    • Fireworks
    • Flash & ActionScript
    • Photoshop
    • Outros Programas de Arte e Design
  • Sistemas Operacionais
    • Microsoft Windows
    • GNU/Linux
    • Outros Sistemas Operacionais
  • Softwares, Hardwares e Redes
    • Microsoft Office
    • Softwares Livres
    • Outros Softwares
    • Hardware
    • Redes
  • Banco de Dados
    • Access
    • MySQL
    • PostgreSQL
    • SQL Server
    • Demais Bancos
  • Segurança e Malwares
    • Segurança
    • Remoção De Malwares
  • Empregos
    • Vagas Efetivas
    • Vagas para Estágios
    • Oportunidades para Freelances
  • Negócios & Oportunidades
    • Classificados & Serviços
    • Eventos
  • Geral
    • Avaliações de Trabalhos
    • Links
    • Outros Assuntos
    • Entretenimento
  • Script Brasil
    • Novidades e Anúncios Script Brasil
    • Mercado Livre / Mercado Sócios
    • Sugestões e Críticas
    • Apresentações

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

Found 11 results

  1. Tenho uma tabela que gravo o idioma e a fluência do candidato. Por ex: Candidato Idioma Fluência 1 Inglês 1 2 Espanhol 3 3 Francês 2 Quero saber quantos candidatos tem inglês, espanhol e francês básico, avançado e intermediário. Para isso, eu faço o seguinte: select Idioma, COUNT(distinct(Candidato)) as Total, count(CASE WHEN Fluência = 1 THEN 'Básico' ELSE NULL END) as Básico, count(CASE WHEN Fluência = 2 THEN 'Intermediário' ELSE NULL END) as Intermediário, count(CASE WHEN Fluência = 3 THEN 'Avançado' ELSE NULL END) as Avançado from tabela group by Idioma O resultado é: Idioma Total Básico Intermediário Avançado Inglês 2 2 0 0 Espanhol 3 1 1 1 Francês 1 0 1 0 Porém, se tiver um registro duplicado, ou seja, de dois candidatos, se um aparecer 3 vezes e outro 2 vezes na tabela com o Inglês básico, o resultado vai ser assim: Idioma Total Básico Intermediário Avançado Inglês 2 5 0 0 Espanhol 3 1 1 1 Francês 1 0 1 0 Como eu faço nesse caso para contar somente os registros únicos?
  2. Boa noite pessoal. Estou dando os primeiros passos em programação e precisando transformar um grupo de controles em planilhas para um bd acessado via interface web (php) na empresa de um amigo. É um sistema para controlar locações de equipamentos. Os equipamentos são locados por vários meses e todo mês tem que gerar um relatório conforme anexo. Cada cliente loca vários equipamentos. Seriam três tabelas relacionadas aqui, a de clientes, a de aluguel e a de equipamentos. Relaciono o id das três para listar apenas os registros coincidentes. Quando fecha o mês a consulta deve gerar um relatório que diga, para cada cliente com locações em aberto naquele mês, quais equipamentos estavam locados; quais estavam locados desde o dia 1, ou se iniciou depois. Se continuou locado até o último dia do mês corrente, ou encerrou antes do final do mês, contar quantos dias ficou locado naquele mês. Multiplicar a quantidade de dias pelo valor da diária, que vem da planilha de equipamentos, e gerar o valor de locação do item. Depois gerar o total de cada cliente e o total de faturamento do mês. Os campos envolvido são: clientes.cliente_id, clientes.nome; equipamentos.equipamentos_id, equipamentos.nome, equipamentos.diaria; aluguel.aluguel_id, aluguel.fk_cli_id, aluguel.fk_eqp_id, aluguel.dataInicio, aluguel.diaria. Se precisar de outra tabela, fiquem livres para sugerir. Esse projeto tem sido uma fonte de exercícios de aprendizado e estou fazendo 0800. Agradeço toda ajuda que puderem me dar. Inclusive, se alguém tiver um sistema em php/mysql para locações pronto e quiser compartilhar eu ficaria muito feliz em estudá-lo.
  3. Pessoal bom dia, Tenho um SQL que me retorna diversos valores de diversas tabelas, inclusive tenho por exemplo o ID de um produto, e este produto está presente em várias localidades (estoques diferentes ao redor do mundo), gostaria de trazer a somatória desses valores de estoque de todas as locations para um determinado registro, porém tenho de retorno o seguinte erro: ORA-00937: not a single-group group function. Vejam um pequeno trecho da query: select pm.PartNumber as Peça, lm.LocName as Location, sl.SL as Stock, --sum(sl.OHGood) from STOCK_LEVEL sl inner join LOC_MASTER lm on sl.LocID = lm.LocID Tentei utilizar no final da query um group by pm.PartNumber porém sem sucesso também. Existem vários campos de valores numéricos que eu gostaria de somar atribuindo ao ID da peça em estoque, porém tenho dificuldade nessa parte de cláusulas de grupo, poderiam me ajudar? Att, Paulo.
  4. Boa noite ... Estou tentando fazer uma consulta com grop by e limit, porém não consigo fazer a consulta funcionar. Tenho uma tabela com 6 campos (nome, endereço, cidade, estado, nivel, data) e essa tabela tem 200.000 linhas. estou tentando fazer uma consulta onde apareçam os nomes por estado. Ex.: Estado Nome endereço cidade estado nivel Ac Aramis teste Rio Branco AC 3 Ac Paulo teste Rio Branco AC 3 Ac Tais teste Rio Branco AC 3 Sp Joao teste Sorocaba SP 3 Sp Marcio teste São Paulo SP 3 ... Fiz assim : SELECT * FROM nometabela WHERE nivel = '3' GROUP BY estado ORDER BY estado ASC limit $inicio, $quantidade Ele faz a listagem e agrupa por estado mas não faz a paginação. alguém pode me ajudar ???? Obrigado
  5. Olá! Tenho o seguinte script: select c.m00af as DATA, c.m00ad as CUPOM, n.numnota as NOTA, i.m43ah as COD_EAN, n.descricao as DESCRICAO, i.val_liquido as VALOR, c.m45bv as CPF from Zan_M45 c inner join Zan_M43 i on c.M00AF = i.M00AF inner join tab_nota_item n on c.M45XE = n.SERIE_NF where c.M00AF = '24-08-2017' -- data and c.M00ZA = 1 -- loja and c.M00AD = 42320 -- cupom and n.numnota = 71132 -- nº do extrato do cupom and n.SERIE_NF = 000265826 -- nº de série do SAT que transmitiu o cupom group by n.numnota,i.M43AH,n.descricao,c.M00AD,c.M00AF,i.val_liquido,c.M45BV Não estou conseguindo agrupar as informações de forma resumida. A tabela m45 é o resumo de um cupom, a tabela m43 é onde estão os itens do cupom, assim como a tab nota item, porém é onde estão os itens com informações do SAT. As tabelas m43 e nota item são parecidas, entretanto, contêm várias informações diferentes. O cupom do script tem 30 itens, mas retornou 237944 registros todos repetidos. Segue imagem abaixo.
  6. Bom dia galera...Tudo bem... Pessoal estou com uma duvida, já pesquisei em alguns tópicos, mas não consegui solucionar o meu problema, se alguém puder me ajudar agradeço. Meu problema é o seguinte: Possuo uma tabela como a do exemplo abaixo onde possuo 25 itens, esta tabela eu uso para montar uma segunda tabela, ou seja com o id_relatorio eu alimento a tabela com o id_relacao_atividade, sendo assim o id_relatorio aparece "n" vezes na tabela relacao_atividade. Sendo assim eu necessito listar todos os ultimos registros da relacao_atividade que contenham apenas um iten id_relatorio, 'Se e somente se' atender aos seguintes requisitos: id_status = '1' AND (resp_1 = '1' OR resp_2 = '1' OR resp_3 = '1' OR resp_4 = '1') Ou seja, eu quero somente os ultimos registro de cada GROUP BY id_relatorio se e somente se atender a linha descrita acima. Exemplo reduzido da minha tabela: id_relacao_atividade - id_relatorio - id_status - resp_1 - resp_2 - resp_3 - resp_4 - numero_linha [ 1 ] - [ 1 ] - [ 2] [ 1 ] - [ 1 ] - [ 0 ] - [ 0 ] - [ 1 ] [ 2 ] - [ 1 ] - [ 1 ] - [ 1 ] - [ 1 ] - [ 1 ] - [ 1 ] - [ 2 ] [ 3 ] - [ 2 ] - [ 3 ] - [ 3 ] - [ 1 ] - [ 0 ] - [ 0 ] - [ 1 ] [ 4 ] - [ 3 ] - [ 1 ] - [ 3 ] - [ 1 ] - [ 1 ] - [ 1 ] - [ 1 ] [ 5 ] - [ 3 ] - [ 2 ] - [ 1 ] - [ 1 ] - [ 1 ] - [ 1 ] - [ 2 ] Para que minha busca seja correta apenas os id_relacao_atividade 2 atende minha busca. O numero_linha deve ser o máximo valor dentro do requisitos de busca assim eu garanto qeu peguei o ultimo valor dentro dos requisitos. já tentei assim: SELCT MAX(numero_linha) FROM relacao_atividade WHERE id_status = '1' AND (resp_1 = '1' OR resp_2 = '1' OR resp_3 = '1' OR resp_4 = '1') GROUP BY id_relatorio Porem ele também me retorna valores que não são os últimos de cada id_relatorio. Por isso minha afirmação "Se e somente se" atender meus requisitos. Obrigado e até
  7. Olá Pessoal, Estou precisando criar uma consulta que agrupe os registros com base no intervalo de tempo de cada registro, por exemplo, na tabela abaixo os registros estão agrupados a cada 5 minutos com base no registro anterior. datetime count 2011/01/03 19:09:53.696 1 2011/01/03 19:18:00.300 3 2011/01/03 19:18:00.503 2 2011/01/03 19:20:26.335 1 2011/01/04 14:00:52.601 1 2011/01/04 14:43:43.067 1 2011/01/04 14:50:10.727 2 2011/01/04 14:52:26.827 3 2011/01/04 14:57:55.608 5 2011/01/04 14:57:55.718 4 2011/01/04 14:59:13.603 4 2011/01/04 15:00:34.260 3 2011/01/04 15:02:55.687 4 2011/01/04 15:04:51.917 3 2011/01/04 15:06:24.760 3 2011/01/04 15:07:15.378 2 2011/01/04 15:10:33.890 1 Desde já, fico muito agradecido. Diovane
  8. Tenho na tabela as seguinte colunas: ID, Contrato, OrdServico, TipoServico, CodFechamento, DataFechamento Aí preciso fazer um um sintético para mostrar a contagem por número de contrato (lembrando que neste caso o numero de contrato pode se repetir várias vezes, uma vez que um número de contrato pode ter várias Ordens de Serviço). O problema está em que se o número do contrato repetir em datas diferentes aí tem que contar, atualmente uso: "SELECT COUNT( DISTINCT contrato ) AS agenda, SUM( IF( codfec > '399', 1, 0 ) ) AS executadas, SUM( IF( codfec < '400' AND codfec <> '', 1, 0 ) ) AS quebra FROM ( SELECT DISTINCT contrato, codfec, rota, b.cod FROM rota a LEFT JOIN tiposervicos b ON a.tiposervico = b.descricao WHERE b.cod = '1' AND rota = 'FIELD' AND MONTH(agenda) = MONTH(CURDATE()) )r GROUP BY rota" funciona direitinho, exceto o fato que se tem o mesmo número de contrato em dias diferente conta como 'um' só. Alguém tem uma luz??? Grato
  9. Boa noite, pessoal Eu procurei por essa questão em todo lugar e não encontrei nenhuma solução. Gostaria de saber se alguém poderia me ajudar: Eu tenho duas tabelas, uma USUARIOS, e outra ATIVIDADES que relaciona todas as atividades dos usuários num site Gostaria de selecionar os usuários que possuem ao menos um ou mais registros em ATIVIDADES. Eu tentei o seguinte forma e funcionou: SELECT usuarios.* FROM usuarios INNER JOIN atividades ON usuarios.usuario = atividades.usuario GROUP BY usuarios.usuario ORDER BY usuarios.nome ASC No entanto, a tabela ATIVIDADES é enorme (acho que mais de 500000 registros) enquanto que a tabela USUARIOS possui cerca de 300 registros e o mysql leva muito tempo para fazer todos esses cruzamentos (no meu caso, uns 7 segundos pelo phpmyadmin contabilizado no servidor) muito mais do que os poucos milésimos de segundo para selecionar todos os usuários. Por fim, a questão é: existe alguma forma de fazer um SELECT somente dos usuários com pelo menos uma atividade sem percorrer toda tabela ATIVIDADES e diminuir o tempo de procura. Obrigada
  10. Helio Cássio

    Sub select

    boa tarde senhores, estou com a seguinte situação preciso calcular media do preço unitario mais o valor so sai correto se eu colocar o group by mais preciso dos 2 valores em um comando so atualmente so consigo separado select (avg(case when operacao='V' then l.preco_unit else NULL end) - avg(case when operacao='E'then l.preco_unit else NULL end) ) as lucro_preco,((avg(case when operacao='V' then l.preco_unit else NULL end) - avg(custo_medio_empresa_f(l.empresa,l.produto,($data_ini::date -1))))*sum(case when operacao='V' then l.quantidade else null end) ) from lancto l join produto p on (p.grid=l.produto) join pessoa e on (e.grid=l.empresa) where tipo='='C" group p.nome; select (avg(case when operacao='V' then l.preco_unit else NULL end) - avg(case when operacao='E'then l.preco_unit else NULL end) ) as lucro_preco,((avg(case when operacao='V' then l.preco_unit else NULL end) - avg(custo_medio_empresa_f(l.empresa,l.produto,($data_ini::date -1))))*sum(case when operacao='V' then l.quantidade else null end) ) from lancto l join produto p on (p.grid=l.produto) join pessoa e on (e.grid=l.empresa) where tipo='='C" group by p.grupo; se eu não colocar o group by o valor sair incorreto pois ele pega de todos produtos e preciso desse 2 resultado em um comando so não sei se criando uma tabela temp poderia ajuda nesse sentindo pois nunca utilizei esse ferramenta. Não sei se expliquei bem.
  11. Bom dia. Tenho um banco de dados Firebird 1.5.6. Estou rodando uma consulta muuuuuuuuito grande, cheia de subqueries somando varios valores. Basicamente o que eu preciso é agrupar pelo tipo de lançamento. Porem eu tenho 7 tipos de lancamentos diferentes, o que eu fiz foi transformar esses 7 tipos em 2 usando case, e agrupar por estes 2. vou postar parte do sql (n posso postar todo) pra vocês terem uma ideia do que to falando... select distinct fo.ano, fo.idlancamento, Case fo.tipolancamento when '3' then '1' else '0' end as tipofolha, fo.data, f.cliente, (select sum(fi.valor) from lanc fo3 inner join itemlanc fi on (fo3.folha=fi.folha) and (fo3.ano=fi.ano) inner join item e on (fi.item=e.item) where fi.item in (select es.itemsys from itemsys es where es.nome = 'valor1') and fo3.tipolancamento = fo.tipolancamento and fo3.data between '2013-01-01' and '2013-01-31' and fo3.cliente=f.cliente ) as valor_base, -- --contem varias subquereies como a anterior - - from lanc fo where fo.data between '2013-01-01' and '2013-01-31' and fo.ano=2013 group by case when fo.tipolancamento = 3 then 1 else 0 end o problema é que aquando rodo esse comando, aparece a seguinte msg: Error: GDS Exception. 335544569. Dynamic SQL Error SQL error code = -104 Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause) SQLState: HY000 ErrorCode: 335544569 alguém sabe como me ajudar?
×
×
  • Create New...