Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Neaktivní uživatel:14.12.2020 17:46

Zdravím, mám následující select:

SELECT t.debtor_account, COUNT(t.debtor_account)
FROM transaction t
GROUP BY t.debtor_account
HAVING COUNT(t.debtor_account) > 2;

který mi funguje, ale já bych potřeboval selectnout všechno, čili *, když to ale zkusím, začne to na mě řvát
column "t.account_fk" must appear in the GROUP BY clause or be used in an aggregate function
Má někdo nápad, jak to předělat, aby select fungoval stejně jako tento dotaz, ale selectovalo všechno ? Díky... :)

Mimochodem, struktura tabulky viz. obrázek.

Editováno 14.12.2020 17:47
Odpovědět
14.12.2020 17:46
Neaktivní uživatelský účet
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:14.12.2020 19:08

Jaky je tvuj chybny kod sql dotazu?
Ja bych zkusil vypsat vsechny sloupce, jejich nazvy misto nevhodne hvezdicky, ktera se ani nedoporucuje pouzivat, protoze ti zbytek programu na tom muze zkapat, kdyz pocita se 6 sloupci a najednou dostane 7, protoze kedo pridal sloupec do db. Nebo pripojit tu tabulku pomoci LEFT JOIN jeste jednou. Nebo udelat nad tim jeste jeden select a pripojit left joinem dalsi sloupce.

google = sql Postgres select all group by having
https://stackoverflow.com/…eater-than-1

SELECT *
FROM product_price_info
WHERE name IN (SELECT name
               FROM product_price_info
               GROUP BY name HAVING COUNT(*) > 1)

SELECT no, name, price, "date"
FROM (
  SELECT no, name, price, "date",
         COUNT(*) OVER (PARTITION BY name) AS cnt
  FROM product_price_info ) AS t
WHERE t.cnt > 1

WITH report AS (
  SELECT p.*, count(*) OVER (PARTITION BY name) as count FROM product p
)
SELECT * FROM report WHERE count > 1;

select t1.*
from tablename t1
join (select name from tablename group by name having count(*) > 1) t2
  on t1.name = t2.name
Editováno 14.12.2020 19:10
 
Nahoru Odpovědět
14.12.2020 19:08
Avatar
Petan
Člen
Avatar
Odpovídá na Neaktivní uživatel
Petan:15.12.2020 17:15

Ahoj
Co chceš aby byl výsledek ?

SELECT *,COUNT(neco)
FROM table
GROUP BY *
HAVING COUNT(neco) > 1;

může maximálně vypsat řádky které jsou duplikované, ovšem v tvé tabulce díky [pk] serial stejně nemůžou byt.

 
Nahoru Odpovědět
15.12.2020 17:15
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.