AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-66634

H. Pauwelyn's questions

Martin Hope
H. Pauwelyn
Asked: 2021-01-19 05:02:09 +0800 CST

Selecione a maioria das ocorrências de um varchar2 no Oracle

  • 2

Precisamos agrupar dados em um banco de dados Oracle e devemos obter a ProductNumbere a Description. O Descriptionprecisa ser aquele com mais ocorrências dentro da tabela. Ambos são um varchar2. Veja abaixo os dados brutos:

Número de produto Descrição
abc Produto ABC (com desconto)
abc Produto ABC
abc Produto ABC
DEF DEF do produto

Resultado esperado:

Número de produto Descrição
abc Produto ABC
DEF DEF do produto

Tentamos isso, mas não encontramos uma maneira de incluir o Descriptioncom a maioria das ocorrências.

select distinct cnt1.ProductNumber
from (select COUNT(*) as total, ProductNumber
      from Inventory
      group by ProductNumber) cnt1,
     (select MAX(total) as maxtotal, ProductNumber
      from (select COUNT(*) as total, ProductNumber 
            from Inventory 
            group by ProductNumber)
      group by ProductNumber) cnt2
where cnt1.total = cnt2.maxtotal;

Aqui você pode encontrar um violino .

Você sabe como poderíamos fazer isso?

oracle group-by
  • 2 respostas
  • 63 Views
Martin Hope
H. Pauwelyn
Asked: 2017-11-24 01:00:47 +0800 CST

Ignore as junções sem nenhum resultado no SQL Server

  • 1

Situação

Estou fazendo uma consulta SQL server para filtrar dados da tabela de projetos ( tblProjecten) . Esta tabela tem muitos relacionamentos com outras tabelas, como region ( tblProjectenRegio) , organization ( tblProjectenOrganisatie) , etc.

Todos os parâmetros que declaro são opcionais. Eu encontrei para usar coalescepara fazer isso. Funciona bem se eu não usar as junções dentro da minha consulta aqui, você obteve minha consulta que usei primeiro:

declare @themaid int             = 1        ; -- themeID
declare @trefwoord nvarchar(max) = ''       ; -- search query

select distinct p.* 
from tblProjecten p left join tblProjectenThema pt                 on p.projectId = pt.projectId
where pt.themaId        = coalesce(@themaid, pt.themaId)                 and
      p.naam like '%' + @trefwoord + '%'                                    ;

Abaixo meus resultados para as diferentes declarações (veja também os dados abaixo) :

@a empregada @trefwood resultados correto
1 166 OK
1 ar condicionado 166 OK
nulo ar condicionado 166 OK
nulo 166, 185, 415 OK

Isso funciona bem, mas se eu adicionar outros parâmetros condicionais, como consulta abaixo. Eu tenho resultados totalmente outros.

declare @themaid int             = 1        ;
declare @studiegebiedid int      = null     ;
declare @opleidingdtypeid int    = null     ;
declare @doelgroepid int         = null     ;
declare @organisatorid int       = null     ;
declare @regioid int             = null     ;
declare @trefwoord nvarchar(max) = ''       ;

select distinct p.* 
from tblProjecten p left join tblProjectenThema pt                 on p.projectId = pt.projectId
                    left join tblProjectenStudiegebieden ps        on p.projectId = ps.projectid
                    left join tblProjectenOpleidingsType pot       on p.projectId = pot.projectID
                    left join tblProjectendoelgroep pd             on p.projectId = pd.projectId
                    left join tblProjectenOrganisator po           on p.projectId = po.projectId
                    left join tblProjectenRegio pr                 on p.projectId = pr.projectId
where pt.themaId        = coalesce(@themaid, pt.themaId)                 and
      ps.studiegebiedid = coalesce(@studiegebiedid, ps.studiegebiedid)   and
      pot.opleidingsID  = coalesce(@opleidingdtypeid, pot.opleidingsID)  and
      pd.doelgroepId    = coalesce(@doelgroepid, pd.doelgroepid)         and
      po.organisatorId  = coalesce(@organisatorid, po.organisatorId)     and
      pr.regioId        = coalesce(@regioid, pr.regioId)                 and
      p.naam like '%' + @trefwoord + '%'                                    ;

Aqui estão os resultados (as outras declarações são null) :

@a empregada @trefwood resultados correto devemos ser
1 NÃO ESTÁ TUDO BEM 166
1 ar condicionado NÃO ESTÁ TUDO BEM 166
nulo ar condicionado NÃO ESTÁ TUDO BEM 166
nulo NÃO ESTÁ TUDO BEM 166, 185, 415

Isso ocorre porque as outras tabelas não possuem nenhum dado dentro dela. (veja os dados abaixo)


Pergunta

Minha pergunta agora é posso ignorar as junções sem nenhum resultado para fazer a última consulta funcionar?

Eu também tentei usar junções internas e direitas, mas deu os mesmos resultados.


Dados

Aqui você tem alguns dados:

tblProjecten:

ID do projeto naam
166 Atestando AIRCO PROJECT
185 Autoweb E-LEARNING
415 Bouw en Hout

tblProjectenThema:

a empregada ID do projeto
1 166
2 166
2 415
3 415
6 185

tblProjectendoelgroep:

doelgroepId ID do projeto
sql-server join
  • 2 respostas
  • 1774 Views
Martin Hope
H. Pauwelyn
Asked: 2017-05-27 07:50:34 +0800 CST

Como obter um grupo onde a contagem é zero?

  • 25

Vou tentar fazer um gráfico a partir dos dados do meu banco de dados SQL server. Eu vou ter todas as ruas com a contagem dos usuários que estão morando nessa rua mesmo que a contagem seja zero.

Para isso, tentei esta consulta:

Create table Streets(
  ID int IDENTITY  primary key,
  Name varchar(100)
);

create table users(
  ID int IDENTITY  primary key,
  Username varchar(100),
  StreetID int references Streets(id)
);

insert into streets values ('1st street'), ('2nd street'), ('3rd street'), 
                           ('4th street'), ('5th street');
insert into users values ('Pol', 1), ('Doortje', 1), ('Marc', 2), ('Bieke', 2), 
                         ('Paulien', 2), ('Fernand', 2), ('Pascal', 2), ('Boma', 3), 
                         ('Goedele', 3), ('Xavier', 4);

select s.name as street, count(s.name) as count 
from users u inner join streets s on u.streetid = s.id
group by s.name

E me dá essa saída:

EU IRIA rua contar
1 1ª rua 2
2 2ª rua 5
3 3ª rua 2
4 4ª rua 1

O problema é que a rua 5, onde não mora nenhum usuário, não aparece no resultado. Eu poderia fazer isso com o SQL Server? Aqui você tem um violino

Atualização: Se eu fizer isso right join, tenho este resultado:

EU IRIA rua contar
1 1ª rua 2
2 2ª rua 5
3 3ª rua 2
4 4ª rua 1
5 5ª rua 1

Veja este violino.

sql-server join
  • 4 respostas
  • 134219 Views
Martin Hope
H. Pauwelyn
Asked: 2016-01-12 00:31:03 +0800 CST

Altere IDENTITY_INSERT para ON no SQL server [duplicado]

  • 8
Essa pergunta já tem resposta aqui :
Como definir identity_insert no SQL Server (1 resposta)
Fechado há 6 anos .

Como posso inserir um IDem uma coluna de identidade no SQL Server? Farei um item especial em minha mesa e detectarei rapidamente esse item pelo ID. Então, como todos os outros IDs são maiores ou iguais a um, darei a esse item especial o ID zero.

O problema agora é que, quando criei essa tabela, coloquei a identidade do ID da coluna em true. Se eu inserir agora o item especial com o código abaixo, tenho o próximo erro:

INSERT INTO MyTable(ID, Name, Description) 
VALUES (0, 'Special title', 'special item');

Erro:

Não é possível inserir um valor explícito para a coluna de identidade na tabela MyTablequando IDENTITY_INSERTestá definido como OFF.

Como posso alterar esta tabela, coluna ou propriedade para criar um registro com ID zero?

sql-server insert
  • 2 respostas
  • 98871 Views
Martin Hope
H. Pauwelyn
Asked: 2015-11-30 06:34:18 +0800 CST

alterar autorização no SQL Server

  • 0

Vou fazer um diagrama de banco de dados no meu SQL Server Management Studio. Mas eu tenho esse aviso que dizia:

Os objetos de suporte do diagrama de banco de dados não podem ser instalados porque este banco de dados não possui um proprietário válido. Para continuar, primeiro use a página Arquivos da caixa de diálogo Propriedades do banco de dados ou a ALTER AUTHORIZATIONinstrução para definir o proprietário do banco de dados como um login válido e, em seguida, inclua os objetos de suporte do diagrama de banco de dados.

Você pode me ajudar com esse erro? Como posso me dar (hein_) a promessa de continuar?

@JeffersonBElias sugeriu que eu executasse este código:

select suser_sname(owner_sid) as usersname from sys.databases where name = 'FreeTimeDBSSA'

O que me dá isso:

+-----+-----------------------+
|     |       usersname       |
+-----+-----------------------+
|  1  | DESKTOP-3BMCMPC\hein_ |
+-----+-----------------------+

Aqui você tem meu Object Explorer:

sql-server database-diagrams
  • 1 respostas
  • 9565 Views
Martin Hope
H. Pauwelyn
Asked: 2015-11-28 01:44:38 +0800 CST

Nome de coluna inválido

  • 1

Por que esse código dá o próximo erro na última linha?

Nome de coluna inválido 'rId'.

;WITH x AS 
(
    SELECT Id as rId
    FROM Roles
    WHERE Minimum >= (select punten 
                      from Users 
                      where id = 'abc')
)
INSERT INTO UserRoles (UserId, RoleId) 
VALUES ('abc', rId);

Eu uso o servidor MS-SQL.

sql-server
  • 1 respostas
  • 1108 Views
Martin Hope
H. Pauwelyn
Asked: 2015-11-12 05:40:00 +0800 CST

Atualize todas as linhas de uma tabela com chave estrangeira aleatória de outra tabela

  • 3

Tenho quatro tabelas: (mostrar na imagem abaixo)

  • Tópico com colunas:
    • EU IRIA
      • chave primária
      • int
    • Categoria ID
      • referências à tabela Categoria
      • int
    • ID do usuário
      • referências à tabela User
      • nvarchar(128)
  • Usuário com coluna:
    • EU IRIA
      • chave primária
      • nvarchar(128)
  • Categoria com coluna
    • EU IRIA
      • chave primária
      • int
  • UserCategoryLink com colunas
    • ID do usuário
      • chave primária
      • referências à tabela User
      • nvarchar(128)
    • Categoria ID
      • chave primária
      • referências à tabela Categoria
      • int

Vou atualizar a tabela Topic para que o CategoryID seja um dos CategoryID's da tabela UserCategoryLink.

PS: Eu uso o MS SQL Server.


3ª atualização: Como você pode ver neste SQL Fiddle , a categoria dos tópicos de cada usuário não está incluída na tabela UserCategoryLink, mas deve! Assim, Marc só pode ter um tópico com categoria de ciclismo e snowboard e não de moto e natação. Agora vou atualizar todas as linhas erradas (corretas também podem ser atualizadas) para um ID da coluna CategoryID da tabela UserCategoryLink.


1ª atualização: tentei o seguinte código

;WITH rs AS 
(
    SELECT UserID as Sid, CategoryID as Cid
    FROM UserCategorieLink
)
update Topic 
    set CategoryID = (select top 1 Cid from rs where UserID = Sid) 
    where UserID = (select top 1 Sid from rs where UserID = Sid);

Mas o resultado não é escolhido aleatoriamente pelas categorias favoritas de cada usuário. Eu sei que vem, top 1mas é porque não sei como gerar números aleatórios.

Vou pegar uma linha aleatória de uma instrução select (veja o código abaixo / como posso fazer em uma linguagem de programação como C#) , mas isso me dá um erro porque RANDgera um número aleatório entre 0 e 1.

RAND(select top 1 Cid from rs where UserID = Sid)

Os erros são:

Sintaxe incorreta perto da palavra-chave 'selecionar'

e

Sintaxe incorreta perto de ')'.

na 7ª linha.


2ª atualização : O código também me dá o mesmo número aleatório para cada tópico que vem do mesmo usuário. Isso também pode ser um número aleatório? Eu sei que todo usuário sempre tem duas categorias favoritas. A consulta deve escolher um deles.

Eu sei que vem da wherecláusula da declaração de atualização. Mas como posso consertar isso?

sql-server update
  • 1 respostas
  • 3825 Views
Martin Hope
H. Pauwelyn
Asked: 2015-10-31 10:01:44 +0800 CST

Gera dados falsos para várias tabelas com relacionamentos

  • 5

Eu tenho 3 tabelas onde quero gerar dados falsos em UsersCategoryLink.

Como posso inserir na tabela UserCategoryLinka coluna UserIDcom usuários aleatórios da tabela Usere um id aleatório da tabela Categories. Neste violino SQL você pode ver as tabelas com alguns valores.

  • UsersCategoryLinkdeve ser preenchido com usuários e categorias aleatórios.
  • Cada usuário deve ter duas categorias.
  • UserIDe CategoryIDsão chaves primárias, então cada valor deve ser único.
  • Estou usando o SQL Server Express.

Tabelas e relações com algumas informações o que eu quero

sql-server insert
  • 1 respostas
  • 1863 Views
Martin Hope
H. Pauwelyn
Asked: 2015-10-26 06:31:44 +0800 CST

preencha a tabela A com IDs aleatórios de outra tabela B

  • 2

Tenho duas tabelas e quero atualizar a coluna GebruikerIDda tabela Topiccom o ID da tabela Gebruikercom valores aleatórios.

Você também deve saber as seguintes coisas:

  • Topic.GebruikerIDreferências a Gebruiker.ID.
  • Nem todo ID é usado em ambas as tabelas.
  • O número aleatório que deve ser gerado existe na tabela Gebruiker(coluna ID) e deve ser atualizado na tabela Topic(coluna GebruikerID).
  • Eu uso o SQL Server em uma edição expressa.

Aqui estão algumas imagens.

  • A relação entre as tabelas

  • Os IDs da Gebruikertabela -table

sql-server random
  • 2 respostas
  • 6575 Views
Martin Hope
H. Pauwelyn
Asked: 2015-10-25 08:13:17 +0800 CST

faça números aleatórios para cada linha e coluna

  • 4

Vou editar alguns dados falsos em meu banco de dados. Mas se eu fizer números aleatórios para cada linha e coluna, não será tão aleatório quanto eu quero. O resultado você confere na imagem abaixo.

Sem números aleatórios

Aqui está o meu código que eu uso:

WITH x AS 
(
    SELECT mintwee, mineen, nul, pluseen, plustwee 
    FROM Topic
)
SELECT mintwee = CAST(RAND()*100 AS INT),
       mineen = CAST(RAND()*100 AS INT), 
       nul = CAST(RAND()*100 AS INT),
       pluseen = CAST(RAND()*100 AS INT),
       plustwee = CAST(RAND()*100 AS INT)
FROM x

e isto:

WITH x AS 
(
    SELECT 
        mintwee = CAST(RAND()*100 AS INT), 
        mineen = CAST(RAND()*100 AS INT),
        nul = CAST(RAND()*100 AS INT), 
        pluseen = CAST(RAND()*100 AS INT), 
        plustwee = CAST(RAND()*100 AS INT)
    FROM Topic
)
SELECT mintwee, mineen, nul, pluseen, plustwee
FROM x ;

Mas ambos tem o mesmo resultado. Eu sei, devo usar uma UPDATEdeclaração, mas isso é apenas para tentar se o resultado for bom. Depois disso, vou usar a UPDATEdeclaração.

Eu uso o SQL Server com uma versão Express 2014.

sql-server random
  • 2 respostas
  • 12154 Views
Martin Hope
H. Pauwelyn
Asked: 2015-10-20 05:49:18 +0800 CST

Percorrer todos os registros em uma tabela e editar uma coluna no SQL Server

  • 0

Como você pode percorrer todas as linhas em uma tabela do SQL Server e editar uma coluna? Você sabe disso:

  • Há muitos IDs ignorados.
  • A coluna creatiedeve ser editada com um minuto a cada vez. Então a primeira deve ser 15:00:00, a segunda 15:01:00, a terceira 15:02:00 etc.
  • No total são 54 registros.
  • Eu uso a versão SQL Server 2014 Express

Eu usei a consulta abaixo, mas o ID máximo é 24697... Portanto, o loop é muito longo.

declare @var datetime = '2015-10-19 0:0:0';
declare @counter int = 1;
declare @max int = (select max(id) from topic);

while (@counter <= @max) begin
    update Topic set Creatie = Creatie + @var where id = @counter;
    set @counter += 1;
    set @var += '0-0-0 0:1:0'
end;

Como faço sempre @var += '0-0-0 0:1:0', não sei qual será o resultado depois de 24697 vezes (se funcionar).

Aqui estão as 25 primeiras linhas.

25 primeiras linhas

PS1: o ano de 2131 é um erro meu. não olhe para ele e use o ano de 2015.

PS2: Trabalho com relógio 24h.

sql-server sql-server-2014
  • 1 respostas
  • 19270 Views
Martin Hope
H. Pauwelyn
Asked: 2015-09-04 03:57:26 +0800 CST

selecione onde a coluna com um %

  • 0

Como posso selecionar todos os registros com um %in? Acho que esse código não funciona.

SELECT column1, column2 FROM table WHERE column1 LIKE '%%%'
  • primeiro e último %para zero, um ou mais caracteres
  • segundo %para o percentual de pele

Alguém pode me sugerir como isso pode funcionar? Eu uso o servidor MS-SQL.

desde já, obrigado

sql-server select
  • 2 respostas
  • 81 Views
Martin Hope
H. Pauwelyn
Asked: 2015-05-29 12:07:02 +0800 CST

Selecione onde o bit não é 0

  • 3

Fiz a seguinte consulta para selecionar um registro que não é 0.

SELECT * FROM Table WHERE Bit != 1 OR Bit IS NULL;

Por que o cheque Bit != 1não é suficiente para um valor anulável BIT?

sql-server t-sql
  • 1 respostas
  • 9296 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve